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

MySQL 5.5/5.7/8.0 源碼編譯安裝全流程(CMake 詳解)

     編輯:MySQL 綜合教學

MySQL 5.5/5.7/8.0 源碼編譯安裝全流程(CMake 詳解)

源碼安裝可深度定制功能、優化指令集、去除無用模組,適合高性能場景、國產化適配、嵌入式部署。本文以 MySQL 5.7/8.0 為主,兼容 5.5 差異。

前置依賴(CentOS/RHEL 7/8)

# 編譯工具鏈
yum install -y gcc gcc-c++ make cmake3 ncurses-devel bison openssl-devel libaio-devel

# 5.7/8.0 額外依賴
yum install -y rpcgen  # 8.0 需

# 創建專用用戶
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin -M mysql

下載源碼

# 官網下載或鏡像
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz  # 5.7 含 Boost
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36.tar.gz           # 8.0

tar -xzf mysql-boost-5.7.44.tar.gz
cd mysql-5.7.44

CMake 核心參數詳解(5.7/8.0 通用)

參數說明推薦值
-DCMAKE_INSTALL_PREFIX安裝根目錄/opt/mysql/5.7.44
-DMYSQL_DATADIR數據目錄/data/mysql
-DWITH_BOOSTBoost 路徑(5.7 必須,8.0 內置)/usr/local/boost 或源碼包內 boost 目錄
-DDEFAULT_CHARSET默認字符集utf8mb4
-DDEFAULT_COLLATION默認校對規則utf8mb4_general_ci
-DWITH_INNOBASE_STORAGE_ENGINEInnoDB(默認 ON)1
-DWITH_MYISAM_STORAGE_ENGINEMyISAM1
-DWITH_ARCHIVE_STORAGE_ENGINEArchive 引擎1
-DWITH_BLACKHOLE_STORAGE_ENGINEBlackhole 引擎1
-DWITH_PARTITION_STORAGE_ENGINE分區支持1
-DWITH_SSLSSL 支持system(用系統 OpenSSL)
-DWITH_ZLIB壓縮庫system
-DENABLED_LOCAL_INFILELOAD DATA LOCAL1
-DWITH_DEBUG調試構建0(生產必須關閉)
-DCMAKE_C_FLAGS / CXX_FLAGS編譯優化-O3 -march=native(針對當前 CPU 優化)

編譯安裝實戰

mkdir build && cd build

cmake .. \
  -DCMAKE_INSTALL_PREFIX=/opt/mysql/5.7.44 \
  -DMYSQL_DATADIR=/data/mysql \
  -DWITH_BOOST=../boost \
  -DDEFAULT_CHARSET=utf8mb4 \
  -DDEFAULT_COLLATION=utf8mb4_general_ci \
  -DWITH_SSL=system \
  -DWITH_ZLIB=system \
  -DENABLED_LOCAL_INFILE=1 \
  -DCMAKE_C_FLAGS="-O3 -march=native" \
  -DCMAKE_CXX_FLAGS="-O3 -march=native"

make -j$(nproc)        # 並行編譯,根據 CPU 核心數
make install           # 安裝到 prefix 目錄

# 權限修正
chown -R mysql:mysql /opt/mysql/5.7.44 /data/mysql

初始化數據目錄

# 5.7
/opt/mysql/5.7.44/bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/5.7.44 --datadir=/data/mysql

# 8.0
/opt/mysql/8.0.36/bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/8.0.36 --datadir=/data/mysql

# 查看臨時密碼
grep 'temporary password' /data/mysql/error.log

配置文件 /etc/my.cnf

[mysqld]
basedir = /opt/mysql/5.7.44
datadir = /data/mysql
socket = /data/mysql/mysql.sock
pid-file = /data/mysql/mysql.pid
port = 3306

character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
default-storage-engine = InnoDB

log-bin = /data/mysql/mysql-bin
binlog-format = ROW
server-id = 1
gtid-mode = ON
enforce-gtid-consistency = ON

innodb_buffer_pool_size = 4G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
max_connections = 2000
skip-name-resolve

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

Systemd 服務管理

cat > /etc/systemd/system/mysqld.service <<'EOF'
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/opt/mysql/5.7.44/bin/mysqld_safe --defaults-file=/etc/my.cnf
ExecStop=/opt/mysql/5.7.44/bin/mysqladmin shutdown
TimeoutSec=600
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable mysqld
systemctl start mysqld

5.5 版本差異(歷史參考)

  • 無 Boost 依賴
  • 使用 mysql_install_db 初始化
  • CMake 參數略異,-DWITH_INNOBASE_STORAGE_ENGINE 等同
  • 不建議新部署 5.5(EOL 2018,無安全補丁)

編譯優化進階

  • -DMYSQL_MAINTAINER_MODE=0:關閉維護者模式(更快)
  • -DWITH_UNIT_TESTS=0:跳過單元測試編譯
  • -DWITH_ASAN=0:關閉 AddressSanitizer
  • 針對特定 CPU:-march=skylake -mtune=skylake(Intel)/ -march=zen3(AMD)
  • 精簡構建:-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 -DWITHOUT_FEDERATED_STORAGE_ENGINE=1

驗證安裝


源碼編譯賦予極致可控性,配合 -march=native 釋放硬件紅利,是高性能、合規、嵌入式場景的最佳選擇。

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