MySQL 複製從屬伺服器中 Seconds_behind_master 的值不斷增加
我們有一個
MySQL 5.0.77
主從複製。在過去的幾周里,複製沒有正常執行,它正在給出Duplicate entry error 1062
. 該Set Global Skip-counter
選項沒有幫助,所以我不得不error no.1062
通過將其添加到/etc/my.cnf
文件中來跳過它,然後它報告 table does not exist 錯誤在一個特定的數據庫中。然後,我
mysqldump
在上週末獲取了該數據庫並在 Slave 中恢復。然後Slave IO_Thread
兩者Slave_SQL
都開始正常執行,看起來複製回到了正軌。該Seconds_behind_master
值非常高,然後在過去 4 天開始下降。今天查看slave的複制狀態,發現這個
seconds_behind_master
值從早上開始一直在增加。我停止了slave IO_Thread
一次,然後 seconds_behind_master 變為 Null。然後在我開始之後IO_thread
,價值變得相同並不斷增加。我看到一個程序從早上
system user gss-app Connect 9535736 copy to tmp table ALTER TABLE
queue_clicksADD INDEX(
puid 開始執行)
請幫我解決這個問題。謝謝。
#mysql> show slave status\G; `*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 203.x.x.x Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000990 Read_Master_Log_Pos: 185674180 Relay_Log_File: mysqld-relay-bin.000224 Relay_Log_Pos: 9286354 Relay_Master_Log_File: mysql-bin.000774 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 472142385 Relay_Log_Space: 112995681998 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 9533355 1 row in set (0.00 sec)`
如果 IO 和 SQL 正在執行,並且
Relay_Master_Log_File
正在趕上Master_Log_File
. 我相信延遲是因為您的總中繼日誌文件很大,大約。105G -Relay_Log_Space: 112995681998
考慮到 Slave 位於 000774 位置,master 位於 000990 位置,總共有 214 個二進制日誌,每個大約 468M (105G/214) 等待在 slave 上重放。我的建議是密切關注
Relay_Master_Log_File
並確保它正在上升並趕上Master_Log_File
. 我還看到主控主機位於公共 IP 地址中,這種複制是通過公共網路還是慢速 WAN 進行的?這可能會引入延遲,連結越快越好。