| 角色 | IP | MySQL版本 | 備註 |
|---|---|---|---|
| Master | 192.168.0.1 | 5.1.x | 同版本、同數據庫名、數據一致 |
| Slave | 192.168.0.2 | 5.1.x |
GRANT REPLICATION SLAVE, RELOAD, SUPER ON *.*
TO 'backup'@'192.168.0.2' IDENTIFIED BY 'wwwjb51net';
FLUSH PRIVILEGES;
驗證:Slave 端執行 mysql -h 192.168.0.1 -u backup -p 測試連通性。
server-id = 10
log-bin = mysql-bin
log = D:\mysql5.1\logs\mylog.log
# 可選:慢查詢、錯誤日志
# slow_query_log = 1
# slow_query_log_file = D:\mysql5.1\logs\slow.log
# log-error = D:\mysql5.1\logs\error.log
關鍵點:server-id 唯一,不要用默認 1;log-bin 必須開啟。
路徑:HKLM\SYSTEM\CurrentControlSet\Services\mysql5.1
修改 ImagePath:
D:\mysql5.1\bin\mysqld --defaults-file="D:\mysql5.1\my.ini" mysql5.1
確保服務讀取正確配置文件。
[mysqld]
server-id = 11
master-host = 192.168.0.1
master-user = backup
master-password = wwwjb51net
replicate-do-db = jb51
# 可選增強
log-bin = mysql-bin
log-slave-updates = 1
relay_log = mysql-relay-bin
read_only = 1
說明:read_only=1 防止誤寫入;log-slave-updates 支持鏈式復制。
net start mysql5.1
-- Master 端
SHOW MASTER STATUS;
-- Slave 端
SHOW SLAVE STATUS\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
原因:Slave 端有寫操作導致主鍵衝突、或重啟事務回滾。
-- 1. 停止 Slave
STOP SLAVE;
-- 2. Master 獲取當前位點
SHOW MASTER STATUS;
-- 記錄 File, Position
-- 3. Slave 重新指向
CHANGE MASTER TO
MASTER_HOST='192.168.0.1',
MASTER_USER='backup',
MASTER_PASSWORD='wwwjb51net',
MASTER_LOG_FILE='mysql-bin.000020',
MASTER_LOG_POS=135617781;
-- 4. 啟動
START SLAVE;
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
START SLAVE;
經驗:方案一徹底但可能丟失未同步數據;方案二不一定有效。建議先試方案二,無效再用方案一。
Seconds_Behind_Master,超過閾值報警FLUSH TABLES WITH READ LOCK + mysqldump 對比核心表 checksumexpire_logs_days = 7,防止磁碟撐爆Windows 下 MySQL 主從配置核心在於:server-id 唯一、log-bin 必開、專用同步賬號、註冊表指定配置文件。故障多集中在 server-id 衝突、防火牆攔截 3306、Slave 端誤寫入。建立「每日巡檢 + 季度演練切換」機制,才能確保同步鏈路真正可靠。