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

MySQL 主從復制原理與手動搭建全流程詳解

     編輯:MySQL 綜合教學

MySQL 主從復制:核心原理、手動配置步驟與驗證指南

主從復制是 MySQL 高可用、讀寫分離、備份卸載的基石。本文系統闡述異步復制原理,並提供基於二進制日誌位點的手動搭建標準流程。

一、核心原理:三線程協作模型

  1. Master - Binlog Dump 線程: 讀取 Master Binlog 事件,發送給 Slave I/O 線程。
  2. Slave - I/O 線程: 連接 Master,請求 Binlog 事件,寫入本地 Relay Log (中繼日誌)。
  3. Slave - SQL 線程: 讀取 Relay Log,在本地重放事件,回放數據變更。

特點:**異步** (Master 不等待 Slave 確認)、**單向** (Master→Slave)、**最終一致性** (存在延遲)。

二、手動搭建標準流程 (基於位點)

前置條件

  • Master/Slave MySQL 版本一致 (或 Slave 版本 ≥ Master)。
  • 網絡互通,防火牆放行 3306。
  • Master 啟用 Binlog (log_bin),設置唯一 server_id。

1. Master 操作

-- 創建復制賬戶
GRANT REPLICATION SLAVE ON *.* TO 'slave001'@'192.168.0.99' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

-- 修改 my.cnf 並重啟
[mysqld]
log-bin = mysql-bin
server-id = 10

-- 獲取當前 Binlog 位點 (供 Slave 起始點)
SHOW MASTER STATUS\G;
-- 記錄 File (如 mysql-bin.000003) 與 Position (如 107)

-- 備份數據 (一致性快照)
FLUSH TABLES WITH READ LOCK;
mysqldump -h127.0.0.1 -P3306 -uroot -p test > /home/ceshi/test.sql;
UNLOCK TABLES;

2. Slave 操作

-- 導入備份數據
mysql -uroot -p test < /home/ceshi/test.sql

-- 修改 my.cnf 並重啟
[mysqld]
server-id = 20
read-only = 1  -- 建議開啟防誤寫

-- 配置復制鏈接並啟動
CHANGE MASTER TO
    MASTER_HOST='192.168.0.98',
    MASTER_USER='slave001',
    MASTER_PASSWORD='123456',
    MASTER_LOG_FILE='mysql-bin.000003',
    MASTER_LOG_POS=107;
START SLAVE;

-- 驗證狀態
SHOW SLAVE STATUS\G;
-- 關鍵指標: Slave_IO_Running=Yes, Slave_SQL_Running=Yes

三、關鍵狀態解讀

指標正常值異常含義
Slave_IO_RunningYesNo: 網絡不通/認證失敗/ Binlog 文件丟失
Slave_SQL_RunningYesNo: 數據不一致/衝突/結構差異/權限不足
Seconds_Behind_Master0 或小值大值: 延遲嚴重,需檢查 SQL 線程性能/網絡/大事務
Last_IO_Error / Last_SQL_Error空具體錯誤信息

四、常見坑點提示

  • FLUSH TABLES WITH READ LOCK 會話斷開即失效,備份期間**勿關閉該會話**。
  • MySQL 5.6+ 推薦使用 GTID 模式 (MASTER_AUTO_POSITION=1),無需手動指定位點,故障切換更簡單。
  • read-only=1 僅限制非 SUPER 權限用戶寫入,管理員仍可寫入,防誤操作需收回權限。
  • Binlog 格式建議 ROW 或 MIXED,避免 STATEMENT 下非確定性函數導致主從不一致。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved