Master 的是標準 MySQL, Slave 換成 Percona, 沒想到反而跟不上進度, 而且 Slave 與 Master 差距越來越遠.
InnoDB 效能調校文件與說明
此台主要是 InnoDB, 所以可以看下述幾篇官方說明文件:
- 8.5. Optimizing for InnoDB Tables
- 14.2.13.1. InnoDB Performance Tuning Tips
- 14.2.3. InnoDB Startup Options and System Variables
由文件找到有個參數可以調整: 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 太慢跟不上解法
- vim /etc/mysql/conf.d/replication_slow.conf
[mysqld]
innodb_flush_log_at_trx_commit = 0
innodb_buffer_pool_size = 512M - sudo service mysql restart # 到此即可, 再來就會看到 Slave 會慢慢跟上進度囉~
好奇,master 是用 MyISAM 還是 InnoDB?
都有, InnoDB + 一些 MyISAM.
您好
我想請問一下當兩台都是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.
上到官網看卻沒有出現相關訊息
麻煩前輩協助解答
你的問題蠻奇怪的, 為何使用 MyISAM 查的是 InnoDB 的說明? XD
MyISAM Replication 是一定可以跑得, 我到現在都還有在用.
我覺得是你設定 或者是 資料有問題耶.
光從這個訊息, 我只知道你的 .frm 不見了, 然後為何會跟 InnoDB 有什麼關係, 猜不出來.
我也覺得奇怪
更怪的是所有run的狀態跟網路上資料比對都很正常>"<
如果你的錯誤訊息不是在 show slave status 看到, 就先不要理他了吧. 🙂