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

MySQL 源碼編譯安裝完整指南:CMake 配置、參數優化、系統集成

     編輯:MySQL 綜合教學

MySQL 5.6/5.7/8.0 源碼編譯安裝全流程實戰

源碼安裝可深度定製功能、優化參數、適配特定硬件。本文以 CentOS 7 + MySQL 5.6.22 為例,覆蓋 CMake、編譯參數、系統服務集成全過程。

一、前置依賴安裝

# 核心構建工具
yum -y install gcc gcc-c++ make cmake ncurses-devel bison openssl-devel

# CMake 3.2+(源碼安裝)
wget https://cmake.org/files/v3.2/cmake-3.2.0.tar.gz
tar zxvf cmake-3.2.0.tar.gz
cd cmake-3.2.0 && ./bootstrap && make && make install

# MySQL 專用用戶
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql

二、獲取源碼包

# 官方下載
wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz
# 或 RPM 源碼包轉換
rpm2cpio mysql-5.6.22-1.src.rpm | cpio -idmv
tar zxvf mysql-5.6.22.tar.gz
mv mysql-5.6.22 /usr/local/mysql

三、CMake 核心配置參數

cd /usr/local/mysql
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DSYSCONFDIR=/etc \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

關鍵參數說明:

  • DEFAULT_CHARSET=utf8mb4:預設全鏈路 utf8mb4,避免亂碼
  • WITH_SSL=system:使用系統 OpenSSL,避免 yaSSL 性能差
  • DOWNLOAD_BOOST=1:MySQL 5.7+ 依賴 Boost,自動下載
  • -DWITH_DEBUG=0:生產環境關閉調試,提升 10-15% 性能

四、編譯安裝與初始化

# 編譯(根據 CPU 核心數並行)
make -j$(nproc)
make install

# 目錄權限
chown -R mysql:mysql /usr/local/mysql

# 系統服務文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld

# 配置文件
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 添加核心參數(見下)

# 初始化數據目錄 (5.7+ 用 --initialize-insecure)
/usr/local/mysql/scripts/mysql_install_db --user=mysql \
    --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 環境變量
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile
source /etc/profile

# 啟動服務
systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

# 安全初始化
/usr/local/mysql/bin/mysql_secure_installation

五、核心配置文件 /etc/my.cnf 模板

[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
server_id = 1

# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# InnoDB 核心
innodb_buffer_pool_size = 2G        # 專用機 70-80% 內存
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_io_capacity = 2000

# 連接/緩存
max_connections = 2000
thread_cache_size = 100
table_open_cache = 4000
tmp_table_size = 64M
max_heap_table_size = 64M

# 慢查詢
slow_query_log = 1
slow_query_log_file = /usr/local/mysql/data/slow.log
long_query_time = 1

# 二進制日誌
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 7
max_binlog_size = 100M

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

[mysql]
default-character-set = utf8mb4

六、常見編譯問題排查

問題解決
CMake 錯誤:Curses library not foundyum install ncurses-devel
Boost 版本不匹配指定 -DWITH_BOOST=/path/to/boost_1_59_0
編譯內存不足swap 分區擴容或減少並行度 make -j2
mysqld 無法啟動檢查 datadir 權限、my.cnf 路徑、端口佔用、SELinux

生產環境推薦:Percona Server / MariaDB 官方 RPM/DEB 包,經優化編譯、測試驗證、安全更新及時。源碼編譯適合:特定硬件優化、功能裁剪、內核參數實驗、學習內部機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved