[mysqld] log-bin=mysql-bin # 必須:開啟二進制日志 server-id=1 # 唯一正整數 1~2^32-1 binlog-do-db=extmail # 僅記錄指定庫(可選) binlog-ignore-db=mysql,test # 忽略系統庫(可選)
GRANT REPLICATION SLAVE ON *.* TO 'abc'@'192.0.0.2' IDENTIFIED BY '123'; FLUSH PRIVILEGES;
service mysql restart mysqldump --master-data extmail > extmail_backup_20071120.sql
--master-data 會在備份文件頭部寫入 CHANGE MASTER TO 位點信息。
SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 79 | extmail | mysql,test | +------------------+----------+--------------+------------------+
關鍵值:File 和 Position,Slave 配置時必需。
[mysqld] server-id=2 # 與 Master 不同 master-host=192.0.0.1 # Master IP master-port=3306 master-user=abc master-password=123 master-connect-retry=60 # 重連間隔秒數
mysqladmin create extmail mysql extmail < extmail_backup_20071120.sql
service mysql restart
SLAVE STOP; CHANGE MASTER TO MASTER_HOST='192.0.0.1', MASTER_USER='abc', MASTER_PASSWORD='123', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=79; SLAVE START;
SHOW SLAVE STATUS\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.0.0.1 Master_User: abc Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 79 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 235 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Last_Error: Seconds_Behind_Master: 0
成功標誌:Slave_IO_Running=Yes 且 Slave_SQL_Running=Yes,Seconds_Behind_Master=0。
| 項目 | 舊版 (my.cnf) | 新版 (SQL 動態配置) |
|---|---|---|
| Master 信息 | my.cnf 靜態配置 | CHANGE MASTER TO 動態配置 |
| Relay Log | 自動生成 | 可指定 relay_log 參數 |
| GTID 模式 | 不支持 | GTID_ON=ON, MASTER_AUTO_POSITION=1 |
| 多源複製 | 不支持 | CHANGE MASTER TO ... FOR CHANNEL 'ch1' |
| 現象 | 原因 | 解決 |
|---|---|---|
| IO_Running=No | 網絡不通/賬號密碼錯/MASTER_LOG_FILE錯 | ping/telnet 3306、核對賬號、重新 CHANGE MASTER |
| SQL_Running=No | 數據衝突/表結構差異/外鍵約束 | SHOW SLAVE STATUS\G 看 Last_Error、跳過錯誤或修復數據 |
| Seconds_Behind_Master 偏大 | Slave 機能弱/大事務/長查詢阻塞 | 優化 Slave 硬件、並行複製、binlog_format=ROW |
| Relay Log 損壞 | 磁盤故障/殺進程未清理 | RESET SLAVE; 重新 CHANGE MASTER FROM 位點 |
gtid_mode=ON, enforce_gtid_consistency=ON,故障轉移自動定位rpl_semi_sync_master_enabled=1,數據零丟失slave_parallel_workers=4,提升 SQL 線程吞吐Seconds_Behind_Master > 300 觸發告警主從複製核心三步:**Master 開 binlog + 建同步賬號、Slave 導入基線數據 + CHANGE MASTER 定位點、驗證雙 Yes 零延遲**。現代版本拥抱 GTID + 半同步 + 並行複製,構建高可用數據層。