MySQL Replication 設定 Delay 多久時間

MySQL Replication 的 Slave 想要設定預設 Delay 一些時間,要怎麼設定?Slave status 要怎麼看?

MySQL Replication 設定 Delay 多久時間

官方文件:MySQL :: 17.3.12 Delayed Replication

Replication Delay 的設定方式

設定 Replication Delay 的方法跟一般 Replication 是一樣的,只是多一個 MASTER_DELAY 的參數而已。

一樣是先建立 repl 的使用者,再來 Slave 指定 Master 的檔案 和 POS位址,範例如下:

  1. ssh MySQL-Master # and mysql -u root
    • mysql> CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password';
    • mysql> GRANT REPLICATION SLAVE ON . TO 'repl_user'@'%';
    • mysql> show master status;
  2. ssh MySQL-Slave # and mysql -u root
    • mysql> CHANGE MASTER TO
      • MASTER_HOST='MYSQL_MASTER_IP',
      • MASTER_USER='repl_user',
      • MASTER_PASSWORD='repl_password',
      • MASTER_LOG_FILE='mysql-bin.000001',
      • MASTER_LOG_POS=4,
      • MASTER_DELAY=3600;

設定好後,就可以在 Slave 看 Status,設定 Delay 時,有幾個數字比較不一樣,要特別注意一下:

  • mysql> SHOW SLAVE STATUS\G # 會看到下述幾個參數:
    • SQL_Delay: 3600
    • Seconds_Behind_Master:
      • 如果小於 Delay 的值,代表還不能開始將 binlog 寫入 DB (Replication)
        • 註:通常只有一開始的時候才會發生,跑久跟上之後, 就會接近 Delay 的值
      • 如果超過 Delay 的值, 代表 binlog 太多,Replication 來不及做,所以需要時間跟上
      • 正常要 <= Delay 的值
    • SQL_Remaining_Delay:有資料可以做了, 下一筆要等多久
      • 如果沒有資料 Seconds_Behind_Master + SQL_Remaining_Delay = 0
      • 如果有資料 Seconds_Behind_Master + SQL_Remaining_Delay = Delay

相關網頁

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料