2014年1月20日星期一

能MySQL複製趕上

Original post: http://anothermysqldba.blogspot.com/2014/01/can-mysql-replication-catch-up.html

因此,複製在MySQL 5.6,最近改善。 然而,人們還在使用5.1和5.5等等一些這些改進將不得不等待打真實的世界。

我最近幫助朝這個方向與地理定位的複製解決方案。 該國的一部分有一個MySQL 5.1服務器和該國的其他部分都安裝一個新的MySQL 5.6服務器。

處理獲得從初級到輔助服務器的初始數據備份的問題後(花了幾個小時,至少可以說),我必須決定可以複寫趕上並跟上。 主服務器有一些大的查詢和優化始終是一個良好的開端。 我不得不在輔助服務器拉和應用一樣快,我能先雖然。

因此,這裡有一些事情要檢查並記住,當涉及到複製。 我已經添加了下面一些幫助鏈接支持我的想法,因為我的工作了。

複製可以是I / O非常沉重。 根據您的應用程序。 一個博客網站沒有那麼多寫這樣的複製I / O是輕,但大量寫入和更新主服務器會導致複製服務器編寫大量relay_logs和binary_logs,如果他們被啟用。 可以在二級啟用二進制日誌允許您運行備份,或者您可能希望此服務器是主給他人。

我分裂登錄到從數據目錄不同的數據分區。
這是設置在my.cnf文件-中繼日誌

InnoDB的緩衝池已被設置為一個值超過10GB。 這是很多這個服務器。
服務器背後仍然超過90,000秒。

所以,我開始做一些調整到服務器,並最終結束了與這些設置。 授予每個服務器是不同的。

的mysql> SELECT @ @ sync_relay_log_info \ G
*************************** 1。 排***************************
@ @ sync_relay_log_info:0
1行中集(0.08秒)

的mysql> SELECT @ @ 的innodb_flush_log_at_trx_commit \ G
*************************** 1。 排***************************
@ @的innodb_flush_log_at_trx_commit:2
1行中集(0.00秒)

的mysql> SELECT @ @ log_slave_updates \ G
*************************** 1。 排***************************
@ @ log_slave_updates:0

的mysql> SELECT @ @ sync_binlog \ G
*************************** 1。 排***************************
@ @ sync_binlog:0
1行中集(0.00秒)

的mysql> SELECT @ @ max_relay_log_size \ G
*************************** 1。 排***************************
@ @ max_relay_log_size:268435456

我打開二進制日誌關閉,因為我監視不同的設置和選項,以幫助複製迎頭趕上。 過了好一會兒。 你們當中有些人看到上面的設置可能會或可能不會被像我這樣的時間框架內工作應用。 然而,它沒有趕上為0秒回。 現在,你可能會注意到,很多這些設置與上面和周圍的二進制日誌。 於是我就一個小測試。 於是,我重新啟動並啟用的bin日誌。 我檢查了服務器上後,發現它10000 +秒落後。 所以,我再次重新啟動和禁用的bin日誌。 它趕上了(0秒在),在不到15分鐘的主服務器。 我用Aurimas“ 工具 ,因為我看著它趕上為好。 如果你以前沒有使用它,它是一個非常好的和方便的工具。

這一切意味著什麼是主服務器必須是ACID兼容。 有了這個設置你也取決於操作系統的緩存上和清理。 這是服務器將被用​​來作為一個主要的讀取服務器信息反饋給他人。 這也意味著,是的,地理定位的複製可以保持最新與主服務器。

如果你需要停止的奴隸,將它仍然趕上快?

如何以及為什麼你停止奴隸是我的第一反應。 你應該養成使用的習慣, 停止從SQL_THREAD ,而不是停止從 ,這使得中繼日誌繼續收集數據,只是沒有把它應用到你的主服務器。 所以,如果你可以利用的,這將有助於減少需要為你以後填入中繼日誌的時間。

一些額外的閱讀為您提供: