首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 源碼編譯安裝全攻略:CMake 參數詳解與最佳實踐

     編輯:MySQL 綜合教學

為何選擇源碼編譯?

  • 自定義功能裁剪(僅編譯所需存儲引擎/字符集)。
  • 優化編譯選項(CPU 指令集、Link Time Optimization)。
  • 調試構建(-DWITH_DEBUG=1)便於核心開發與問題定位。
  • 統一部署標準化輸出(-DBUILD_CONFIG=mysql_release)。

CMake 獨立構建目錄模式(推薦)

tar zxvf mysql-5.6.17.tar.gz
mkdir build_mysql && cd build_mysql
cmake ../mysql-5.6.17 [OPTIONS...]
make -j$(nproc)
make install

優勢: 源碼目錄保持乾淨,支持同一源碼多配置並行構建(如 Debug/Release 不同目錄)。

核心 CMake 參數分類速查

安裝路徑佈局

參數說明默認/建議
-DCMAKE_INSTALL_PREFIX安裝根目錄/usr/local/mysql 或 /opt/mysql
-DINSTALL_LAYOUT預設佈局STANDALONE (tar.gz 風格) / RPM / DEB / SVR4
-DMYSQL_DATADIR數據目錄/data/mysql(生產建議獨立分區)
-DSYSCONFDIRmy.cnf 搜索目錄/etc(不可運行時修改)
-DMYSQL_TCP_PORTTCP 端口3306
-DMYSQL_UNIX_ADDRSocket 文件/tmp/mysql.sock 或 /var/run/mysqld/mysqld.sock

存儲引擎控制(關鍵優化點)

# 預設靜態編譯:MyISAM, MERGE, MEMORY, CSV
# 靜態編譯 InnoDB(推薦,性能最優)
-DWITH_INNOBASE_STORAGE_ENGINE=1

# 靜態編譯其他引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

# 排除不需要的引擎(減小體積)
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

# 關鍵:InnoDB Memcached 插件(5.6+)
-DWITH_INNODB_MEMCACHED=1

原則: 生產環境核心引擎(InnoDB)靜態編譯,邊緣引擎按需動態或排除。

字符集與校對規則

-DDEFAULT_CHARSET=utf8mb4
-DDEFAULT_COLLATION=utf8mb4_general_ci
-DWITH_EXTRA_CHARSETS=all  # 或 complex/none

功能開關

參數建議值影響
-DENABLED_LOCAL_INFILEOFF關閉 LOAD DATA LOCAL INFILE,減少安全風險
-DENABLED_PROFILINGON啟用 SHOW PROFILE,性能分析必備
-DWITH_DEBUGOFF (生產) / ON (測試)調試符號,影響 10-15% 性能
-DWITH_SSLsystem使用系統 OpenSSL,支持 TLS 連接
-DWITH_ZLIBsystem使用系統 zlib,COMPRESS()/壓縮協議
-DIGNORE_AIO_CHECKON (無 libaio 環境)跳過 Linux AIO 依賴檢查

構建類型

-DCMAKE_BUILD_TYPE=RelWithDebInfo  # 默認:優化 + 調試信息
-DCMAKE_BUILD_TYPE=Release         # 純優化,無調試符號
-DBUILD_CONFIG=mysql_release       # 官方發布配置集合

完整生產環境構建示例

cmake ../mysql-5.6.17 \
  -DCMAKE_INSTALL_PREFIX=/opt/mysql/5.6.17 \
  -DINSTALL_LAYOUT=STANDALONE \
  -DMYSQL_DATADIR=/data/mysql \
  -DSYSCONFDIR=/etc \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
  -DWITH_INNODB_MEMCACHED=1 \
  -DENABLED_LOCAL_INFILE=OFF \
  -DENABLED_PROFILING=ON \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo

安裝後初始化(關鍵步驟)

groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql

cd /opt/mysql/5.6.17
chown -R mysql:mysql .
scripts/mysql_install_db --user=mysql --datadir=/data/mysql
chown -R root .
chown -R mysql:mysql /data/mysql

# 啟動測試
bin/mysqld_safe --user=mysql &

# 設置 root 密碼
bin/mysqladmin -u root password 'StrongPassw0rd!'

# 註冊服務
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld

常見構建錯誤排查

  • CMake 錯誤:找不到 Curses/Readline → yum install ncurses-devel readline-devel 或 -DWITH_READLINE=bundled。
  • 編譯錯誤:Atomic operations 不支持 → 老舊 CPU/內核,添加 -DINNODB_PAGE_ATOMIC_REF_COUNT=OFF。
  • make clean 後仍報錯 → 刪除 CMakeCache.txt 重新配置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved