MySQL 8 ソースビルド時の CMake 設定オプション解説

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

タグ: mysql8 CMake source-build Boost storage-engine

6月14日 17:12 投稿