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

CentOS 7 編譯安裝 MySQL 5.7.9 完整指南:Boost 依賴、CMake 參數、my.cnf 模板

     編輯:MySQL 綜合教學

CentOS 7 編譯安裝 MySQL 5.7.9 完整指南:Boost 依賴、CMake 參數、my.cnf 模板

MySQL 5.7 GA 引入原生 JSON、GIS、Sys Schema、優化器重構、多核擴展性提升。本文記錄從源碼編譯安裝全流程,含 Boost 依賴處理、CMake 關鍵參數解析、生產級 my.cnf 模板、數據庫初始化與安全配置。

編譯前準備

# 依賴包
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake

# 下載源碼
cd /root/oneinstack/src
wget https://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz
wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.9.tar.gz

# 創建運行用戶
useradd -M -s /sbin/nologin mysql

CMake 編譯配置(核心參數解析)

tar xzf boost_1_59_0.tar.gz
tar xzf mysql-5.7.9.tar.gz
mkdir -p /data/mysql
cd mysql-5.7.9

cmake . \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/data/mysql \
  -DDOWNLOAD_BOOST=1 \
  -DWITH_BOOST=../boost_1_59_0 \
  -DSYSCONFDIR=/etc \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DWITH_FEDERATED_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DENABLED_LOCAL_INFILE=1 \
  -DENABLE_DTRACE=0 \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci \
  -DWITH_EMBEDDED_SERVER=1
參數說明建議值
WITH_BOOSTBoost 庫路徑(5.7.5+ 必需)本地解壓目錄
DEFAULT_CHARSET默認字符集utf8mb4(支援 Emoji)
WITH_*_STORAGE_ENGINE編譯內置引擎InnoDB/Partition/MyISAM 必選
ENABLED_LOCAL_INFILELOAD DATA LOCAL INFILE1(生產建議 0)
ENABLE_DTRACEDTrace 動態追蹤0(Linux 通常不需要)

編譯安裝

# 並行編譯(根據 CPU 核心數)
make -j $(grep -c processor /proc/cpuinfo)
make install

⚠️ 編譯極度消耗內存,建議 ≥ 4GB 內存,小內存機器請用二進制包或減少並行度 make -j2。

服務管理配置

# 啟動腳本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

生產級 my.cnf 模板(/etc/my.cnf)

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4

[mysqld]
port = 3306
socket = /tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql
pid-file = /data/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1
init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
skip-name-resolve
back_log = 300
max_connections = 1000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 4M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 4M
thread_cache_size = 8
query_cache_type = 1
query_cache_size = 8M
query_cache_limit = 2M
ft_min_word_len = 4
log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 30
log_error = /data/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/mysql/mysql-slow.log
performance_schema = 0
explicit_defaults_for_timestamp = 1
skip-external-locking
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 64M  # 專用 DB 服務器建議 50-70% 物理內存
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2  # 1 最安全,2 性能最優
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120
bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 8M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
interactive_timeout = 28800
wait_timeout = 28800

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

數據庫初始化(5.7 新方式)

# --initialize-insecure:不生成隨機密碼,root 密碼為空
/usr/local/mysql/bin/mysqld --initialize-insecure \
  --user=mysql \
  --basedir=/usr/local/mysql \
  --datadir=/data/mysql

# 注意:datadir 目標目錄必須為空
# 舊版 mysql_install_db 已棄用,放在 bin/ 目錄下

啟動與安全初始化

service mysqld start

# 設置 root 密碼(建議強密碼)
dbrootpwd="StrongP@ssw0rd2024"
/usr/local/mysql/bin/mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${dbrootpwd}';"
/usr/local/mysql/bin/mysql -e "ALTER USER 'root'@'127.0.0.1' IDENTIFIED BY '${dbrootpwd}';"
/usr/local/mysql/bin/mysql -e "FLUSH PRIVILEGES;"

# 或運行安全向導
/usr/local/mysql/bin/mysql_secure_installation

驗證安裝

# 連接測試
mysql -uroot -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'char%';"

# 進程檢查
ps -ef | grep mysqld
netstat -lntp | grep 3306

常見編譯問題排查

  • CMake 錯誤:Boost not found → 確認 -DWITH_BOOST 路徑正確,或使用 -DDOWNLOAD_BOOST=1 自動下載
  • 編譯 OOM Killer → 增加 Swap、減少 make -j 並行度、或改用二進制包
  • 啟動失敗:datadir 不為空 → 清空 /data/mysql 重新初始化
  • Socket 連接失敗 → 檢查 my.cnf client/mysqld 區塊 socket 路徑一致
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved