X

MySQL InnoDB Replication Slave 太慢 跟不上解法

Master 的是標準 MySQL, Slave 換成 Percona, 沒想到反而跟不上進度, 而且 Slave 與 Master 差距越來越遠.

InnoDB 效能調校文件與說明

此台主要是 InnoDB, 所以可以看下述幾篇官方說明文件:

由文件找到有個參數可以調整: innodb_flush_log_at_trx_commit

此參數調整的原因: InnoDB 預設是每次寫入, 就會將 Log 寫入(Flush)硬碟, 所以會很慢.

innodb_flush_log_at_trx_commit 的值可以設為下述三個: (預設是 1), 下述取自此篇: MyISAM 與 InnoDB 性能比較

決定何時將緩衝區的log寫入日誌檔及何時將日誌檔存入硬碟檔案中。
設定值:
0:日誌緩衝區每秒一次都會將log寫到日誌檔案,並且將硬碟裡的日誌檔案做更新儲存,但是在commit動作下不做任何操作。
1:在每次commit動作時,日誌緩衝區的資料被寫到日誌檔裡,且對日誌檔案更新至硬碟中。(預設值)
2:在每次commit時,日誌緩衝區被寫到日誌檔案,但不對日誌檔案更新至硬碟中。

MySQL InnoDB Replication Slave 太慢跟不上解法

  1.  vim /etc/mysql/conf.d/replication_slow.conf

    [mysqld]
    innodb_flush_log_at_trx_commit = 0
    innodb_buffer_pool_size = 512M

  2. sudo service mysql restart # 到此即可, 再來就會看到 Slave 會慢慢跟上進度囉~

相關網頁

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