1. 程式人生 > >mysql 從庫落後主庫太多優化

mysql 從庫落後主庫太多優化

設置 cati iat 默認 io線程 com med events inf

有時候為了避免master.info和中繼日誌崩潰,在容忍額外的fsync()帶來的開銷,推薦設置
sync_master_info = 1
sync_relay_log = 1
sync_relay_log_info = 1

當然,如果備庫跟主庫延遲特別大,備庫的io線程謝了很多中繼日誌,通過relay_log_purge設置,sql線程重放完一個中繼日誌中的事件後會盡快將刪除。
極端情況下,需要設置relay_log_space_limit,這樣如果中繼日誌的大小超過這個值,I/O線程將停止,等待sql線程釋放磁盤空間。

sync_master_info:每間隔多少事務刷新master.info,如果是table(innodb)設置無效,每個事務都會更新

The effects of this variable on a replication slave depend on whether the slave‘s master_info_repository is set to FILE or TABLE
sync_relay_log:默認為10000,即每10000次sync_relay_log事件會刷新到磁盤。為0則表示不刷新,交由OS的cache控制
If the value of this variable is greater than 0, the MySQL server synchronizes its relay log to disk (using fdatasync()) after every sync_relay_log events are written to the relay log. Setting this variable takes effect for all replication channels immediately, including running channels
sync_relay_log_info:每間隔多少事務刷新relay-log.info,如果是table(innodb)設置無效,每個事務都會更新
master_info_repository:記錄主庫binlog的信息,可以設置FILE(master.info)或者TABLE(mysql.slave_master_info)
relay_log_info_repository:記錄備庫relaylog的信息,可以設置FILE(relay-log.info)或者TABLE(mysql.slave_relay_log_info)

為了快速讓從庫同步主庫最新數據,可臨時修改以下配置:

innodb_flush_log_at_trx_commit = 0

sync_binlog = 0

sync_master_info = 2000
sync_relay_log = 2000
sync_relay_log_info = 2000

mysql 從庫落後主庫太多優化