MySQL 8 をソースからコンパイルする際、CMake を用いた柔軟なビルド設定が可能です。特に依存ライブラリやインストールパス、機能の有効/無効を細かく制御できます。
Boost ライブラリの準備
MySQL 8 のビルドには Boost ライブラリが必要です。Linux 環境では以下のように取得・配置します:
wget https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.gz
tar -xzf boost_1_73_0.tar.gz -C /usr/local/
ln -s /usr/local/boost_1_73_0 /usr/local/boost
Windows 環境での手順は別途ドキュメントを参照してください。
基本的な CMake コマンド
設定可能なオプション一覧は以下のコマンドで確認できます:
cmake . -LH
# またはインタラクティブに確認する場合
ccmake .
主な設定カテゴリ
- CMake オプションリファレンス
- インストールレイアウト設定
- ストレージエンジン選択
- 機能有効化/無効化
- コンパイラフラグ指定
- NDB Cluster 関連設定
代表的なオプション例
# インストール先ディレクトリ
-DCMAKE_INSTALL_PREFIX=/opt/mysql
# 文字セットと照合順序
-DDEFAULT_CHARSET=utf8mb4
-DDEFAULT_COLLATION=utf8mb4_ja_0900_as_cs
# SSL 対応
-DWITH_SSL=system
# デバッグビルド
-DWITH_DEBUG=1
# 不要なストレージエンジンを除外
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_ARCHIVE_STORAGE_ENGINE=1
# パフォーマンススキーマの一部機能を無効化
-DDISABLE_PSI_MUTEX=1
-DDISABLE_PSI_FILE=1
# システム統合設定
-DWITH_SYSTEMD=ON
-DSYSTEMD_SERVICE_NAME=mysql80
インストール構成のカスタマイズ
-DINSTALL_LAYOUT で事前定義されたレイアウトを選べます:
STANDALONE:デフォルト。tarball 向け構成RPM:RPM パッケージ向けDEB:Debian/Ubuntu 向け(実験的)SVR4:Solaris 向け
個別のディレクトリパスも上書き可能:
cmake . \
-DINSTALL_LAYOUT=STANDALONE \
-DMYSQL_DATADIR=/var/lib/mysql80 \
-DSYSCONFDIR=/etc/mysql80
ストレージエンジンの制御
必須エンジン(InnoDB, MyISAM など)以外は明示的に有効化する必要があります:
# FEDERATED エンジンを静的にリンク
-DWITH_FEDERATED_STORAGE_ENGINE=1
# BLACKHOLE エンジンを除外
-DWITHOUT_BLACKHOLE_STORAGE_ENGINE=1
高度な機能設定
# X Protocol を無効化
-DWITH_MYSQLX=OFF
# LDAP 認証プラグインを強制有効
-DWITH_AUTHENTICATION_LDAP=ON
# 圧縮アルゴリズムの選択
-DWITH_ZLIB=bundled
-DWITH_LZ4=system
# メモリ検査ツール統合
-DWITH_ASAN=ON
-DWITH_UBSAN=ON
コンパイラ最適化制御
ビルドタイプによって最適化レベルが変わります:
-DCMAKE_BUILD_TYPE=RelWithDebInfo # デフォルト:最適化+デバッグ情報
-DCMAKE_BUILD_TYPE=Release # 最適化のみ、サイズ削減
-DCMAKE_BUILD_TYPE=Debug # 最適化なし、フルデバッグ
特定のフラグを追加する場合:
cmake . \
-DCMAKE_C_FLAGS="-march=native -O2" \
-DCMAKE_CXX_FLAGS="-march=native -O2"
NDB Cluster 専用設定
クラスタ機能を有効にする場合:
-DWITH_NDBCLUSTER=ON
-DWITH_NDBMTD=ON
-DWITH_NDB_JAVA=OFF # Javaサポート不要ならOFF推奨
-DWITH_NDB_PORT=1186