| 項目 | 路徑 |
|---|---|
| MySQL 安裝目錄 | /usr/local/mysql |
| 數據目錄 | /data/mysql |
| 配置文件 | /usr/local/mysql/my.cnf |
rpm -qa | grep mariadb rpm -e --nodeps mariadb-libs-5.5.37-1.el7_0.x86_64
groupadd mysql useradd -g mysql mysql -s /bin/false
cd /usr/local/src/ # libunwind wget https://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz tar zxvf libunwind-1.1.tar.gz && cd libunwind-1.1 ./configure && make && make install # gperftools (tcmalloc) wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.5/gperftools-2.5.tar.gz tar zxvf gperftools-2.5.tar.gz && cd gperftools-2.5 ./configure && make && make install echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf ldconfig
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.x.tar.gz tar zxvf mysql-5.7.x.tar.gz && cd mysql-5.7.x
# 查看所有參數說明 cmake . -LH | more # 正式編譯 (若報錯先刪除 CMakeCache.txt 重試) rm -rf CMakeCache.txt cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_UNIX_ADDR=/dev/shm/mysql.sock \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_USER=mysql \ -DWITH_DEBUG=0 \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/usr/local/boost \ && make -j$(nproc) && make install
關鍵參數解析:
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=...:MySQL 5.7 依賴 Boost,自動下載指定版本避免版本不匹配-DMYSQL_UNIX_ADDR=/dev/shm/mysql.sock:Socket 放入內存文件系統,提升本地連接效能-DWITH_DEBUG=0:發布模式編譯,體積更小效能更高
chmod 755 /var/lib/mysql cd /usr/local/mysql chown -R mysql:mysql .
/usr/local/mysql/bin/mysqld --initialize \ --basedir=/usr/local/mysql \ --datadir=/data/mysql \ --user=mysql \ --explicit_defaults_for_timestamp=1
執行後輸出中包含 root@localhost: ,務必記錄臨時密碼。
cp support-files/my-default.cnf /usr/local/mysql/my.cnf # 編輯 my.cnf 根據實際硬件調整 innodb_buffer_pool_size 等核心參數
cp support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on
service mysqld start # 修改 root 密碼 /usr/local/mysql/bin/mysqladmin -u root -p'臨時密碼' password 'NewStrongPass123!' # 安全向導 /usr/local/mysql/bin/mysql_secure_installation
編譯安裝雖步驟繁多,但能精確控制版本、優化參數、去除無用模組,是高性能 MySQL 部署的基石。生產環境建議結合 Ansible/Playbook 實現自動化部署,確保一致性與可複現性。