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位址,範例如下:
- 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;
- 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;
- mysql> CHANGE MASTER TO
設定好後,就可以在 Slave 看 Status,設定 Delay 時,有幾個數字比較不一樣,要特別注意一下:
- mysql> SHOW SLAVE STATUS\G # 會看到下述幾個參數:
- SQL_Delay: 3600
- Seconds_Behind_Master:
- 如果小於 Delay 的值,代表還不能開始將 binlog 寫入 DB (Replication)
- 註:通常只有一開始的時候才會發生,跑久跟上之後, 就會接近 Delay 的值
- 如果超過 Delay 的值, 代表 binlog 太多,Replication 來不及做,所以需要時間跟上
- 正常要 <= Delay 的值
- 如果小於 Delay 的值,代表還不能開始將 binlog 寫入 DB (Replication)
- SQL_Remaining_Delay:有資料可以做了, 下一筆要等多久
- 如果沒有資料 Seconds_Behind_Master + SQL_Remaining_Delay = 0
- 如果有資料 Seconds_Behind_Master + SQL_Remaining_Delay = Delay