啟用 CentOS SCLo 源獲取 MySQL 5.6 官方構建:
yum -y install centos-release-scl-rh centos-release-scl # 設置優先級並禁用默認啟用 (按需啟用) sed -i -e "s/\]$/\]\npriority=10/g" /etc/yum.repos.d/CentOS-SCLo-scl.repo sed -i -e "s/\]$/\]\npriority=10/g" /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-SCLo-scl.repo sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
# 安裝 yum --enablerepo=centos-sclo-rh -y install rh-mysql56-mysql-server # 載入環境變量 (scl 機制) scl enable rh-mysql56 bash mysql -V # mysql Ver 14.14 Distrib 5.6.26 # 持久化環境變量 cat > /etc/profile.d/rh-mysql56.sh <<'EOF' #!/bin/bash source /opt/rh/rh-mysql56/enable export X_SCLS="`scl enable rh-mysql56 'echo $X_SCLS'`" EOF chmod +x /etc/profile.d/rh-mysql56.sh
# 配置字符集 vi /etc/opt/rh/rh-mysql56/my.cnf.d/mysql-server.cnf # [mysqld] 區段添加 character-set-server=utf8 # 啟動並設置開機自啟 systemctl start rh-mysql56-mysqld systemctl enable rh-mysql56-mysqld # 安全向導 mysql_secure_installation # 設置 root 密碼、移除匿名用戶、禁止遠程 root、刪除 test 庫、重載權限
firewall-cmd --add-service=mysql --permanent firewall-cmd --reload
vi /etc/opt/rh/rh-mysql56/my.cnf.d/mysql-server.cnf # [mysqld] log-bin=mysql-bin server-id=101 systemctl restart rh-mysql56-mysqld # 創建同步用戶 mysql -u root -p GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
vi /etc/opt/rh/rh-mysql56/my.cnf.d/mysql-server.cnf # [mysqld] log-bin=mysql-bin server-id=102 read_only=1 report-host=node01.srv.world systemctl restart rh-mysql56-mysqld
# Master: 鎖表備份 mysql -u root -p FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; -- 記錄 File: mysql-bin.000001, Position: 400 EXIT mysqldump -u root -p --all-databases --lock-all-tables --events > mysql_dump.sql # 解鎖 mysql -u root -p -e "UNLOCK TABLES;" # 傳輸備份文件 scp mysql_dump.sql vdevops:/tmp/ # Slave: 導入數據 mysql -u root -p < /tmp/mysql_dump.sql # 配置同步位點並啟動 mysql -u root -p CHANGE MASTER TO MASTER_HOST='10.1.1.53', MASTER_USER='replica', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=400; START SLAVE; # 驗證 SHOW SLAVE STATUS\G # Slave_IO_Running: Yes # Slave_SQL_Running: Yes # Seconds_Behind_Master: 0
| 指標 | 正常值 | 異常含義 |
|---|---|---|
| Slave_IO_Running | Yes | I/O 線程連接主庫正常 |
| Slave_SQL_Running | Yes | SQL 線程重放正常 |
| Seconds_Behind_Master | 0 或小值 | 大值表示延遲,需檢查慢查詢/鎖爭用 |
| Last_IO_Error / Last_SQL_Error | 空 | 非空即具體錯誤信息 |
基於 SCLo 的 MySQL 5.6 安裝路徑隔離 (/opt/rh/rh-mysql56),多版本共存無衝突。主從配置核心在於:server-id 唯一、log-bin 啟用、同步用戶權限最小化、備份位點精確記錄、防火牆雙向放行。生產環境建議引入 GTID 模式簡化故障切換。