首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL主從不同步處理——數據庫初始化

     編輯:MySQL 綜合教學

MySQL主從不同步處理——數據庫初始化

原文內容極少,僅有標題。此處補充 MySQL 主從複製初始化的標準流程與關鍵點,作為後續不同步排查的基線。

主從複製初始化標準步驟

1. 主庫配置

[mysqld]
server-id=1                     # 唯一整數
log-bin=mysql-bin               # 啟用二進制日志
binlog-format=ROW               # 推薦 ROW 格式
gtid-mode=ON                    # 啟用 GTID (5.6+)
enforce-gtid-consistency=ON
sync_binlog=1                   # 事務提交即刷盤,最安全
innodb_flush_log_at_trx_commit=1

2. 創建複製用戶

CREATE USER 'repl'@'%' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;

3. 從庫配置

[mysqld]
server-id=2                     # 與主庫不同
relay-log=relay-bin
log-slave-updates=ON            # 級聯從庫必開
read-only=ON                    # 防止誤寫入
gtid-mode=ON
enforce-gtid-consistency=ON

4. 獲取主庫同步坐標 (非 GTID 模式)

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
-- 記錄 File (如 mysql-bin.000001) 和 Position (如 154)
UNLOCK TABLES;

5. 從庫建立同步 (GTID 模式簡化)

CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='repl',
  MASTER_PASSWORD='strong_password',
  MASTER_AUTO_POSITION=1;       -- GTID 模式自動定位,無需文件/位置
START SLAVE;

6. 驗證同步狀態

SHOW SLAVE STATUS\G
-- 關鍵指標:
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes
-- Seconds_Behind_Master: 0
-- Last_IO_Error / Last_SQL_Error: 空

初始化常見坑點

  • server-id 衝突: 主從、多從之間必須唯一。
  • 防火牆/安全組阻攔 3306: 從庫無法連主庫。
  • 未開啟 binlog / 格式不一致: 主庫必須啟用 binlog,建議統一 ROW 格式。
  • 數據不一致起步: 初始化時主庫已有數據,需用 mysqldump --master-data=2 --single-transaction 導出並導入從庫,或用 xtrabackup 物理備份恢復。
  • GTID 模式下跳過事務風險: SET GTID_NEXT 手動跳過易導致數據偏移,謹慎使用。

初始化完成後

建立監控告警:Seconds_Behind_Master > 阈值、Slave_IO_Running != Yes、Slave_SQL_Running != Yes 立即通知。定期校驗主從數據一致性 (如 pt-table-checksum)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved