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

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

在〈MySQL InnoDB Replication Slave 太慢 跟不上解法〉中有 6 則留言

  1. 您好
    我想請問一下當兩台都是MYISAM的狀況下能不能做同步?

    環境:
    MASTER和SLAVE環境相同 MYSQL5.0.51a版
    兩台default的儲存引擎是MYISAM(所有TABLE也是MYISAM)
    目前我的設定都正確了
    Slave_IO_RUNNING=YES
    SLAVE_SQL_RUNNING=YES

    但是測試的狀況下仍然沒有同步
    然後在MASTER的LOG檔內出現這樣的訊息
    [ERROR] Cannot find table dada/paypal from the internal data dictionary
    of InnoDB though the .frm file for the table exists. Maybe you
    have deleted and recreated InnoDB data files but have forgotten
    to delete the corresponding .frm files of InnoDB tables, or you
    have moved .frm files to another database?
    See http://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting.html
    how you can resolve the problem.

    上到官網看卻沒有出現相關訊息
    麻煩前輩協助解答

    1. 你的問題蠻奇怪的, 為何使用 MyISAM 查的是 InnoDB 的說明? XD
      MyISAM Replication 是一定可以跑得, 我到現在都還有在用.
      我覺得是你設定 或者是 資料有問題耶.
      光從這個訊息, 我只知道你的 .frm 不見了, 然後為何會跟 InnoDB 有什麼關係, 猜不出來.

發表迴響

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