mysql如何設置主從復制?復制參數有哪些?

mysql主從復制的搭建步驟包括:一、主庫開啟二進制日志并創建復制賬號;二、獲取主庫數據并導出;三、配置從庫并啟動復制;四、常用參數包括server-id、log-bin、relay-log等;五、常見問題如延遲、連接失敗需逐一排查。具體操作為:1. 在主庫配置文件中設置server-id=1和log-bin=mysql-bin;2. 創建repl用戶并授權;3. 鎖表后執行mysqldump導出數據并解鎖;4. 從庫配置server-id=2,導入數據后通過change master命令連接主庫并啟動復制;5. 常用參數包括設置read-only、replicate-do-db、slave-skip-errors等;6. 常見問題包括延遲過高可啟用線程復制、連接失敗檢查網絡與權限、數據不一致使用pt-table-checksum校驗工具檢測,主庫宕機需手動切換并考慮數據丟失風險。

mysql如何設置主從復制?復制參數有哪些?

MySQL主從復制是數據庫高可用和讀寫分離的基礎,設置起來不算復雜,但關鍵是要理解原理并正確配置。下面直接說怎么操作。


一、主從復制的基本步驟

要搭建主從復制,核心是讓從庫(Slave)連接到主庫(Master),然后同步數據。主要流程包括以下幾個步驟:

  1. 開啟主庫的二進制日志
    在主庫的配置文件(如my.cnf或my.ini)中添加:

    server-id=1 log-bin=mysql-bin

    server-id必須唯一,主從不能一樣;log-bin用于記錄所有更改操作的日志。

  2. 創建用于復制的賬號
    在主庫執行:

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

    這個賬號只能用來做復制,權限有限更安全。

  3. 獲取主庫當前狀態并導出數據
    執行以下命令鎖表并查看當前binlog位置:

    FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;

    然后使用mysqldump導出數據,并解鎖:

    mysqldump -u root -p --all-databases --master-data > backup.sql mysql -u root -p < backup.sql UNLOCK TABLES;
  4. 配置從庫并啟動復制
    從庫的配置也要有唯一的server-id:

    server-id=2

    導入主庫的數據后,在從庫執行:

    CHANGE MASTER TO   MASTER_HOST='主庫IP',   MASTER_USER='repl',   MASTER_PASSWORD='password',   MASTER_LOG_FILE='mysql-bin.000001',   MASTER_LOG_POS=  4; START SLAVE;

    其中MASTER_LOG_FILE和MASTER_LOG_POS來自之前查到的SHOW MASTER STATUS結果。


二、常用的主從復制參數說明

MySQL提供了一些重要的參數來控制復制行為,這些參數對性能和一致性影響較大。

  • server-id:每個實例必須唯一,用于標識服務器身份。
  • log-bin:啟用二進制日志,主庫必須開啟才能進行復制。
  • relay-log:從庫的中繼日志,默認自動命名,可以手動指定路徑優化IO。
  • read-only:建議在從庫上設置為只讀,防止誤操作。
  • replicate-do-db / replicate-ignore-db:控制哪些數據庫需要或不需要復制。
  • slave-skip-errors:跳過某些錯誤,比如常見的1062(主鍵沖突)、1053(中斷)等。

這些參數可以根據業務需求靈活調整,但要注意不要隨意忽略錯誤,否則可能導致數據不一致。


三、常見問題與注意事項

主從復制過程中可能會遇到一些問題,比如延遲、斷連、數據不一致等。

  • 延遲過高:可能是網絡慢、從庫負載高或者SQL執行慢。可以通過多線程復制(MySQL 5.7+支持)緩解。
  • 連接失敗:檢查防火墻、端口是否開放,賬號密碼是否正確,主庫是否允許遠程訪問。
  • 數據不一致:可以通過定期校驗工具如pt-table-checksum檢測。
  • 主庫宕機處理:如果主庫掛了,可能需要手動切換從庫為主庫,這時候要考慮是否有數據丟失風險。

此外,復制默認是異步的,如果你對一致性要求高,可以考慮半同步復制(semi-sync replication)。


基本上就這些。主從復制雖然步驟明確,但細節容易出錯,特別是初始數據的一致性和網絡配置部分。只要一步步來,注意參數配置和驗證,一般都能順利跑起來。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享