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

CentOS 6.3 編譯安裝 MySQL 5.6.15 並配置主從複制完整實戰

     編輯:MySQL 綜合教學

前言

雖然 CentOS 6 已停止維護,但存量系統仍存。本文記錄 **最小化安裝 CentOS 6.3 → 編譯安裝 MySQL 5.6.15 (CMake) → 虛擬機克隆 → 配置 GTID/傳統主從複制** 全流程,含依賴安裝、CMake 參數解析、權限設定、主從驗證與避坑指南。

環境準備

  • 主庫:192.168.1.41,Server ID=1
  • 從庫:192.168.1.42,Server ID=42
  • 作業系統:CentOS 6.3 最小化安裝
  • 關閉防火牆:chkconfig iptables off、service iptables stop
  • 靜態 IP、DNS、/etc/hosts 雙向解析

編譯安裝 MySQL 5.6.15

1. 安裝編譯依賴


yum install -y gcc gcc-c++ ncurses-devel perl cmake
# CMake 2.8.10+(源碼安裝或 yum)
wget https://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
tar -xzf cmake-2.8.10.2.tar.gz && cd cmake-2.8.10.2
./bootstrap && make && make install

2. 建立用戶與目錄


groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
mkdir -p /usr/local/mysql /data/mysqldb
chown -R mysql:mysql /usr/local/mysql /data/mysqldb

3. 下載源碼並編譯


wget https://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.15.tar.gz
tar -xzf mysql-5.6.15.tar.gz && cd mysql-5.6.15

cmake \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  -DMYSQL_DATADIR=/data/mysqldb \
  -DMYSQL_TCP_PORT=3306 \
  -DENABLE_DOWNLOADS=1

make -j$(nproc) && make install

CMake 關鍵參數解析

參數含義
CMAKE_INSTALL_PREFIX安裝根目錄
MYSQL_UNIX_ADDRSocket 檔案路徑
DEFAULT_CHARSET/COLLATION預設字符集/校對規則
WITH_*_STORAGE_ENGINE=1靜態編譯指定引擎(InnoDB、Archive、Blackhole)
MYSQL_DATADIR資料目錄
MYSQL_TCP_PORT監聽端口
ENABLE_DOWNLOADS=1下載 GMock 等測試依賴(可選)

4. 初始化資料庫


cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --datadir=/data/mysqldb

5. 配置檔與啟動腳本


cp support-files/my-default.cnf /etc/my.cnf
# 編輯 /etc/my.cnf 確認 datadir=/data/mysqldb

cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

6. 啟動並設定 root 密碼


service mysqld start
/usr/local/mysql/bin/mysqladmin -u root password '123456'

虛擬機克隆建立從庫

  1. 關閉主庫虛擬機,完整克隆(VMware/VirtualBox)。
  2. 啟動克隆機,修改:

hostname mysql42
# 修改 /etc/sysconfig/network-scripts/ifcfg-eth0 → IP=192.168.1.42
rm /etc/udev/rules.d/70-persistent-net.rules  # 關鍵:清除網卡綁定
reboot
  1. 重啟後,**必須修改 auto.cnf 的 server-uuid** 與主庫不同:

cd /data/mysqldb
vi auto.cnf
# 修改 server-uuid 任意幾位(如 0→1, 2→a),確保全域唯一

主從複制配置(傳統 File+Position 模式)

1. 主庫開啟 Binlog、設定 Server ID


# /etc/my.cnf
server-id = 1
log-bin = mysql-bin
# 重啟
service mysqld restart

2. 主庫建立複制用戶


mysql -uroot -p123456
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%' IDENTIFIED BY 'repl_pass123';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
# 記錄 File、Position(如 mysql-bin.000001, 120)

3. 從庫配置


# /etc/my.cnf
server-id = 42
log-bin = mysql-bin  # 可選,建議開啟支援鏈式
service mysqld restart

4. 從庫建立複制連線


mysql -uroot -p123456
CHANGE MASTER TO
  MASTER_HOST='192.168.1.41',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='repl_pass123',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql-bin.000001',
  MASTER_LOG_POS=120;
START SLAVE;
SHOW SLAVE STATUS\G;

5. 驗證成功標準


Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
```
**兩個 Yes 缺一不可**,否則檢查 Last_IO_Error / Last_SQL_Error。

避坑指南

坑點現象解決
克隆後 server-uuid 重複SHOW SLAVE STATUS 顯示 Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs修改從庫 auto.cnf server-uuid
防火牆攔截 3306從庫連不上主庫chkconfig iptables off / 安全組放行
SELinux 阻擋mysqld 無法讀寫 datadirsetenforce 0 或配置正確 context
權限不足GRANT 後未 FLUSH PRIVILEGES必須 FLUSH PRIVILEGES
字符集不一致主從資料亂碼主從 my.cnf 統一 character-set-server=utf8

總結

編譯安裝 MySQL 5.6 核心在於 **CMake 參數正確、目錄權限正確、my.cnf datadir 指向正確**。主從複制核心在於 **Server ID 唯一、Binlog 開啟、複制用戶權限正確、GTID/File+Position 定位準確、server-uuid 不衝突**。將上述步驟封裝為 Shell/Ansible 腳本,可實現批量部署與版本化管理。

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