MySQL 5.6 引入 CMake、GTID、InnoDB Memcached Plugin 等新特性。本文記錄 CentOS/Ubuntu 雙平台編譯安裝全流程,含 CMake 參數釋義、gmock 下載失敗處理、my.cnf 生產級配置模板、啟動腳本註冊與核心參數調優原理。
yum -y install wget gcc-c++ cmake make bison ncurses-devel perl unzip
sudo apt-get install -y g++ gcc make libpcre3 zlib1g libbz2-dev automake cmake perl libncurses5-dev bison
groupadd mysql useradd -r -g mysql mysql mkdir -p /data/logs/mysql /data/mysql
wget https://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz tar zxvf mysql-5.6.12.tar.gz cd mysql-5.6.12 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/server/mysql-5.6.12 \ -DMYSQL_DATADIR=/data/mysql \ -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \ -DMYSQL_USER=mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DENABLE_DOWNLOADS=1
| 參數 | 含義 |
|---|---|
| CMAKE_INSTALL_PREFIX | 安裝根目錄 |
| MYSQL_DATADIR | 數據文件目錄 |
| MYSQL_UNIX_ADDR | Unix Socket 路徑 |
| MYSQL_USER | 運行用戶 |
| DEFAULT_CHARSET | 預設字符集(預設 latin1) |
| DEFAULT_COLLATION | 預設校對規則 |
| WITH_INNOBASE_STORAGE_ENGINE | 啟用 InnoDB |
| ENABLE_DOWNLOADS | 自動下載 gmock 等測試組件 |
cd source_downloads unzip gmock-1.6.0.zip cd .. # 重新執行 cmake # 或關閉下載:-DENABLE_DOWNLOADS=0
make && make install ln -s /usr/local/server/mysql-5.6.12 /usr/local/server/mysql
chown -R mysql:mysql /usr/local/server/mysql* chown -R mysql:mysql /data/mysql /data/logs/mysql /usr/local/server/mysql/scripts/mysql_install_db \ --user=mysql --datadir=/data/mysql \ --basedir=/usr/local/server/mysql \ --collation-server=utf8_general_ci
cp /usr/local/server/mysql/support-files/mysql.server /etc/init.d/mysql
[mysqld] datadir = /data/mysql socket = /tmp/mysql.sock pid-file = /data/logs/mysql/mysql.pid user = mysql port = 3306 default_storage_engine = InnoDB # InnoDB 核心參數(按實際記憶體調整) innodb_buffer_pool_size = 2G innodb_log_file_size = 128M innodb_file_per_table = 1 innodb_flush_method = O_DIRECT # 字符集 character-set-server = utf8 collation-server = utf8_general_ci # 網路優化 skip-name-resolve skip-host-cache # 日誌 log_error = /data/logs/mysql/mysql-error.log long_query_time = 1 slow_query_log = 1 slow_query_log_file = /data/logs/mysql/mysql-slow.log # 其他 explicit_defaults_for_timestamp = true max_connections = 500 open_files_limit = 65535 sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [client] socket = /tmp/mysql.sock port = 3306
。設定為索引總量與 OS Cache 可用量的較小值。5. skip-name-resolve / skip-host-cache
禁用 DNS 反查,消除連接建立時的網路延遲,防止 DNS 故障導致資料庫不可用。
6. open_files_limit = 65535
防止「Too many open files」錯誤。現代 OS 文件句柄開銷極小,建議設大不設小。
九、配置哲學總結
編譯安裝賦予最大靈活性,也要求更深的內核理解。掌握核心參數背後的機制原理,勝過死記硬背數百個配置項。