源碼編譯安裝雖較包裹管理器繁瑣,但能精確控制版本、優化編譯參數、自訂安裝路徑、啟用/停用特定存儲引擎,是生產環境部署的首選方式。本文以 CentOS 7 + MySQL 5.5.19 為例,記錄完整標準化安裝流程。
# 核心編譯工具鏈 yum install -y gcc gcc-c++ ncurses ncurses-devel cmake # 關鍵:主機名解析,避免啟動警告 echo "127.0.0.1 $(hostname)" >> /etc/hosts
# 解壓並進入目錄 tar xvf mysql-5.5.19.tar.gz cd mysql-5.5.19 # 核心 cmake 參數詳解 cmake . \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \ -DENABLED_LOCAL_INFILE=ON \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \ -DWITHOUT_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FAST_MUTEXES=1 \ -DWITH_ZLIB=bundled \ -DENABLED_LOCAL_INFILE=1 \ -DWITH_READLINE=1 \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_DEBUG=0
-DWITH_INNOBASE_STORAGE_ENGINE=1:啟用 InnoDB(事務引擎核心)-DWITHOUT_EXAMPLE/PARTITION:移除無用引擎減小體積-DDEFAULT_CHARSET=utf8:預設字符集(建議新專案用 utf8mb4)-DWITH_DEBUG=0:發布模式,無調試符號,效能最優# 編譯安裝(視 CPU 核心數調整 -j 參數) make -j$(nproc) && make install # 部署配置模板 cp /root/mysql-5.5.19/support-files/my-large.cnf /etc/my.cnf # 修改數據目錄 vim /etc/my.cnf # [mysqld] 區段新增: # datadir = /usr/local/mysql/data
# 建立專用用戶/群組(無登錄 Shell) groupadd mysql useradd -r -g mysql -s /sbin/nologin mysql # 目錄權限分離:程式碼 root 擁有,數據 mysql 擁有 chown -R root:mysql /usr/local/mysql chmod -R 777 /usr/local/mysql/data # 生產建議 750 + ACL 精細控制
# 初始化系統表(MySQL 5.5 使用 mysql_install_db) /usr/local/mysql/scripts/mysql_install_db \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data \ --user=mysql # 啟動服務 /usr/local/mysql/bin/mysqld_safe --user=mysql & # 驗證連線 /usr/local/mysql/bin/mysql -u root -p
# 註冊為系統服務 cp /home/mysql-5.5.19/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld service mysqld start # 建立客戶端軟連結(方便直接輸入 mysql 指令) ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
| 配置項 | 建議值/操作 | 說明 |
|---|---|---|
| root 密碼 | mysql_secure_installation | 移除匿名用戶、禁止遠程 root、移除 test 庫 |
| innodb_buffer_pool_size | 物理記憶體 60-70% | 核心效能參數 |
| innodb_log_file_size | 256M-1G | 減少 checkpoint 壓力 |
| innodb_flush_log_at_trx_commit | 1 | ACID 保證,極高可用可放寬到 2 |
| sync_binlog | 1 | Binlog 持久化保證 |
| max_connections | 1000-5000 | 視應用連接池調整 |
| slow_query_log | ON + long_query_time=1 | 慢查詢審計基礎 |
| log_bin | ON + expire_logs_days=7 | 主從復制與時間點恢復基礎 |
CMakeCache.txt 重試源碼編譯安裝提供最大靈活性,但也要求運維團隊具備編譯鏈、作業系統、MySQL 內核參數的綜合能力。建議:
標準化、自動化、版本化是資料庫部署運維成熟度的三大支柱。從手工編譯走向基礎設施即代碼,是每個 DBA 團隊必經的進化之路。