| 節點 | IP | 角色 |
|---|---|---|
| Server01 | 192.168.1.31 | Master A / Slave B |
| Server02 | 192.168.1.32 | Master 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
[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
[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 已消失,雙向同步生效
LOAD DATA FROM MASTER **會全局鎖表**,大庫慎用。生產建議用 mysqldump --single-transaction --master-data=2 非阻塞備份。master-host 等參數在 5.1+ 已廢棄,改用 CHANGE MASTER TO 動態配置,持久化到 master.info。本文為 5.0 歷史配置法,僅供考古參考。auto_increment_increment=2, auto_increment_offset=1/2),5.0 不支援 GTID,主鍵衝突極難修復。START SLAVE,建議寫 cron 守護腳本檢查 Slave_IO_Running。setsebool -P mysql_connect_any 1。| 舊版 5.0 雙主 | 現代 8.0 組架構 |
|---|---|
| my.cnf 靜態 master-host | CHANGE MASTER TO 動態 + GTID |
| LOAD DATA FROM MASTER | XtraBackup / 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**,獲得原生多主一致性、自動故障切換、零數據丟失保證。