FLUSH TABLES WITH READ LOCK; -- 5.1: FLUSH TABLES WITH READ LOCK
SHOW MASTER STATUS; -- 記錄 File + Position (或 GTID: Executed_Gtid_Set)
mysqldump -uroot -p -A --single-transaction --master-data=2 | gzip > /backup/full_$(date +%F).sql.gz
UNLOCK TABLES;
gunzip < /backup/full_20240115.sql.gz | mysql -uroot -p -S /data/3307/mysql.sock
CHANGE MASTER TO
MASTER_HOST='192.168.200.98', MASTER_PORT=3306,
MASTER_USER='rep', MASTER_PASSWORD='nick',
MASTER_AUTO_POSITION=1; -- GTID 模式無需 File/Position
START SLAVE;
SHOW SLAVE STATUS\G -- 確認 IO/SQL Running=Yes, Seconds_Behind_Master=0
-- my.cnf
slave-skip-errors = 1032,1062,1007 -- 找不到行/主鍵衝突/庫已存在
skip-name-resolve -- 避免 DNS 解析延遲
謹慎使用,優先修正根因 (主鍵衝突通常源於雙寫)。
-- 兩庫均設:
auto_increment_increment = 2
auto_increment_offset = 1 -- 主1
auto_increment_offset = 2 -- 主2
log-slave-updates = 1
應用層按 ID 奇偶路由寫入,避免衝突。
| 參數 | 用途 |
|---|---|
| -B / --databases | 多庫,含 CREATE DATABASE/USE |
| --single-transaction | InnoDB 熱備份 (一致性快照) |
| -F / --flush-logs | 備份前切換 Binlog,利用增量恢復 |
| --master-data=2 | 輸出 CHANGE MASTER 註釋 (位點資訊) |
| --lock-all-tables | MyISAM 全局鎖 (慎用) |
| -d / --no-data | 僅結構 |
| -t / --no-create-info | 僅資料 |
# 每日 02:00 完整備份 (InnoDB)
mysqldump -u$USER -p$PASS -S $SOCK -F --single-transaction -A -B | gzip > /backup/full_$(date +%F).sql.gz
# 每小時增量:複製新 Binlog
mysqladmin -u$USER -p$PASS -S $SOCK flush-logs
cp /data/3306/mysql-bin.0000XX /backup/binlog/
MySQL 主從 + 讀寫分離 + 分級備份構成經典高可用基石,配合 GTID、ProxySQL、Binlog 增量恢復,可滿足絕多數中型互聯網業務 RPO<15min、RTO<30min 需求。