首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 雙主熱備(AB 互備)實戰部署:RHEL 5 + MySQL 5.0.24 完整配置流程

     編輯:MySQL 資料庫相關知識

環境信息

節點IP角色
Server01192.168.1.31Master A / Slave B
Server02192.168.1.32Master B / Slave A

軟件包:MySQL-max-5.0.24-Linux-i686.tar.gz(含 InnoDB、NDB、備份增強)。

通用安裝步驟(雙節點同執行)

tar -zxvf MySQL-max-5.0.24-Linux-i686.tar.gz
mv mysql-max-5.0.24-Linux-i686-glibc23 /usr/local/mysql-max-5.0.24
ln -s /usr/local/mysql-max-5.0.24 /usr/local/mysql
cd /usr/local/mysql
groupadd mysql
useradd -g mysql mysql
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql.mysql data
chmod 777 data -R
bin/mysqld_safe --user=mysql &
cp support-files/mysql.server /etc/init.d/mysqld
echo 'PATH=/usr/local/mysql/bin:$PATH:$HOME/bin' >> ~/.bash_profile
source ~/.bash_profile

雙主配置核心:my.cnf 對稱配置

Server01 (192.168.1.31) /etc/my.cnf

[mysqld]
server-id = 1
log-bin = binlog_name
master-host = 192.168.1.32
master-user = slave
master-password = 123456
# InnoDB 基礎配置
innodb_data_home_dir = /usr/local/mysql/data/
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data/
innodb_buffer_pool_size = 16M
innodb_log_file_size = 5M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

Server02 (192.168.1.32) /etc/my.cnf

[mysqld]
server-id = 2
log-bin = binlog_name
master-host = 192.168.1.31
master-user = slave
master-password = 123456
# InnoDB 配置同上

關鍵點:server-id 雙節點唯一;log-bin 啟用;master-host/user/password 指向對端,**實現互為主從**。

建立複制賬號並驗證

# Server01 上
service mysqld start
mysql -u root
GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.* TO 'slave'@'192.168.1.32' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

# Server02 上測試連接
mysql -u slave -p -h 192.168.1.31
SHOW GRANTS;  -- 確認權限
START SLAVE;
LOAD DATA FROM MASTER;  -- 5.0 時代快速同步基線數據(慎用,鎖表久)
SHOW SLAVE STATUS\G;
-- Slave_IO_Running: Yes, Slave_SQL_Running: Yes 即成功

# 反向同樣操作:Server02 授權給 Server01,Server01 START SLAVE

雙向同步驗證

# Server01
CREATE DATABASE test01;
USE test01;
CREATE TABLE tb01 (name CHAR(20), phone CHAR(20));
INSERT INTO tb01 VALUES ('laoli', '12345678');
SELECT * FROM tb01;

# Server02
SHOW DATABASES;  -- 應見 test01
DROP DATABASE test01;

# Server01
SHOW DATABASES;  -- test01 已消失,雙向同步生效

5.0 版本特有避坑指南

  1. LOAD DATA FROM MASTER **會全局鎖表**,大庫慎用。生產建議用 mysqldump --single-transaction --master-data=2 非阻塞備份。
  2. master-host 等參數在 5.1+ 已廢棄,改用 CHANGE MASTER TO 動態配置,持久化到 master.info。本文為 5.0 歷史配置法,僅供考古參考。
  3. 雙主**必須配置自增交錯**(auto_increment_increment=2, auto_increment_offset=1/2),5.0 不支援 GTID,主鍵衝突極難修復。
  4. 網路抖動導致同步中斷需手動 START SLAVE,建議寫 cron 守護腳本檢查 Slave_IO_Running。
  5. 防火牆雙向放行 3306,SELinux 設 setsebool -P mysql_connect_any 1。

現代化升級路徑(強烈建議)

舊版 5.0 雙主現代 8.0 組架構
my.cnf 靜態 master-hostCHANGE MASTER TO 動態 + GTID
LOAD DATA FROM MASTERXtraBackup / Clone Plugin 非阻塞同步
單線程 SQL 執行MTS (slave_parallel_workers=4+)
手動故障切換MHA / Orchestrator / Group Replication 自動切換
無一致性校驗pt-table-checksum 定期巡檢

總結

本文記錄了 MySQL 5.0 時代經典的 **雙主熱備(AB 互備)** 部署全流程:源碼安裝 → 對稱 my.cnf → 交叉授權 → START SLAVE → LOAD DATA FROM MASTER → 雙向驗證。雖版本極老,但 **互為主從、交叉授權、自增交錯** 的核心思想貫穿至今。生產環境請直接採用 **MySQL 8.0 + GTID + Group Replication / InnoDB Cluster**,獲得原生多主一致性、自動故障切換、零數據丟失保證。

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