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

Linux 系統下 MySQL 5.5 源碼編譯安裝完整實戰筆記

     編輯:MySQL 綜合教學

從零構建生產級 MySQL 實例:源碼編譯安裝全流程詳解

源碼編譯安裝雖較包裹管理器繁瑣,但能精確控制版本、優化編譯參數、自訂安裝路徑、啟用/停用特定存儲引擎,是生產環境部署的首選方式。本文以 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_size256M-1G減少 checkpoint 壓力
innodb_flush_log_at_trx_commit1ACID 保證,極高可用可放寬到 2
sync_binlog1Binlog 持久化保證
max_connections1000-5000視應用連接池調整
slow_query_logON + long_query_time=1慢查詢審計基礎
log_binON + expire_logs_days=7主從復制與時間點恢復基礎

八、常見問題排查

  • 編譯失敗:檢查 cmake 輸出、確認依賴庫版本、清理 CMakeCache.txt 重試
  • 啟動報錯 "Can't create test file":datadir 權限、SELinux、磁碟空間
  • 連線被拒:skip-networking=0、bind-address、防火牆 3306 埠
  • 字符集亂碼:client/connection/results/database 全鏈路 utf8mb4

九、總結與遷移建議

源碼編譯安裝提供最大靈活性,但也要求運維團隊具備編譯鏈、作業系統、MySQL 內核參數的綜合能力。建議:

  1. 將編譯參數、配置模板、初始化腳本納入版本控管(Git)
  2. 構建標準化 Ansible Playbook 或 Dockerfile 實現不可變基礎設施
  3. 建立安裝驗收清單:版本確認、參數生效、連線測試、備份恢複演練
  4. 新專案優先考慮 MySQL 8.0+(CMake 3.4+、Boost 依賴、數據字典重構)

標準化、自動化、版本化是資料庫部署運維成熟度的三大支柱。從手工編譯走向基礎設施即代碼,是每個 DBA 團隊必經的進化之路。

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