首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 主從復制配置步驟詳解:GTID 前身的基於位點復制

     編輯:MySQL 資料庫相關知識

MySQL 5.5 基於 Binlog 位點的主從復制手把手配置

拓撲

  • Master: 10.4.11.12 (server-id=12)
  • Slave: 10.4.11.13 (server-id=13)
  • 全庫復制,便於管理

Master 端配置

  1. 創建復制賬號
    
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* 
    TO 'repl'@'10.4.11.13' IDENTIFIED BY 'mysql';
    
  2. 修改 my.cnf 並重啟
    
    [mysqld]
    # skip-networking
    server-id = 12
    log-bin = mysql-bin
    

Slave 端配置

  1. 修改 my.cnf 並重啟
    
    [mysqld]
    server-id = 13
    log-bin = mysql-relay-bin  # 可選,便於鏈式復制
    
  2. 導入基線數據
    
    # Master 導出(InnoDB 單事務一致性)
    mysqldump --all-databases --single-transaction --master-data=1 > data.sql
    
    # Slave 導入
    mysql < data.sql
    
  3. 獲取 Master Binlog 位點
    
    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      107 |              |                  |
    +------------------+----------+--------------+------------------+
    
  4. 配置並啟動復制
    
    CHANGE MASTER TO
        MASTER_HOST='10.4.11.12',
        MASTER_USER='repl',
        MASTER_PASSWORD='mysql',
        MASTER_LOG_FILE='mysql-bin.000001',
        MASTER_LOG_POS=107;
    
    START SLAVE;
    
  5. 驗證狀態
    
    SHOW SLAVE STATUS\G
    -- 關鍵三列:
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Slave_IO_State: Waiting for master to send event
    

測試驗證

  • Master 建表/插數據
  • Slave 查詢是否同步

常見故障排查

現象原因處理
IO_Running=No網絡不通/賬號密碼錯/防火牆telnet 3306、檢查 GRANT、防火牆
SQL_Running=NoSQL 執行錯誤/主鍵衝突/字符集查 Last_SQL_Error、跳過錯誤 SET GLOBAL sql_slave_skip_counter=1
Seconds_Behind_Master 增大從庫壓力大/單線程應用慢優化從庫、升級 5.6+ 多線程復制

遷移建議

MySQL 5.6+ 引入 **GTID 復制**,配置更簡單、故障轉移更可靠。新架構優先用 GTID;存量 5.5 可按本文維護,規劃升級。

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