RPM 安裝後,啟動腳本 /etc/init.d/mysql 讀取 /etc/my.cnf。拷貝模板:
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
[mysqld]
server-id=1
log-bin
binlog-do-db=backup
# Slave 角色配置
master-host=192.168.37.189
master-user=backup
master-password=1234
master-port=3306
[mysqld]
server-id=2
master-host=192.168.37.188
master-user=backup
master-password=1234
master-port=3306
master-connect-retry=60
replicate-do-db=backup
log-bin
binlog-do-db=backup
關鍵點:雙節點均開啟 log-bin 並設置對方為 Master,實現互備。binlog-do-db 控制同步庫,多庫多行寫。
# 節點 1 執行
GRANT ALL PRIVILEGES ON backup.* TO 'backup'@'192.168.37.189' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;
# 節點 2 執行
GRANT ALL PRIVILEGES ON backup.* TO 'backup'@'192.168.37.188' IDENTIFIED BY '1234';
FLUSH PRIVILEGES;
MySQL 4.0 建議用 REPLICATION SLAVE 權限,為避免麻烦文中直接授全權限。
backup、表 jintaoUSE backup; SHOW TABLES; DESC jintao; 確認結構同步核心看 Slave_IO_Running=Yes、Slave_SQL_Running=Yes。否則檢查網絡、權限、master.info 是否殘留舊配置(需刪除後重啟)。
Slave 端應見兩個 system user 線程:Waiting for master to send event(IO 線程)、Has read all relay log(SQL 線程)。若現 Reconnecting 檢查 Master 存活、網絡、配置。
Master 端 Position 不為 0,Binlog Dump 線程狀態正常。錯誤日志 /var/lib/mysql/hostname.err 記錄詳細異常。
核心原理:IO 線程拉取 Master binlog 寫本地 relay-log,SQL 線程回放 relay-log。同步前雙側數據必須一致,否則 binlog 為增量操作無法回放。