Mysql
MySQL 複製不同步
我有一個主-主複製系統。但是,由於自動增量問題,我在複製時遇到了錯誤……它停止了複製。
有人告訴我這樣做:
stop slave; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; start slave;
它沒有用。然後他們告訴我這樣做:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 2;
它沒有用。然後為了測試它,我做了:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 99999;
它開始了,但它沒有更新。我在 DB1 上創建了一個表……它沒有出現在 DB2 上……
下面是我的 DB1 和 DB2 的 SHOW STATUS(我把它們放在一起):
mysql> show master status\G *************************** 1. row *************************** File: mysql-bin.000605 Position: 2019727 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.00 sec) mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: Master_User: Master_Port: Connect_Retry: 60 Master_Log_File: mysql-bin.000605 Read_Master_Log_Pos: 2008810 Relay_Log_File: mysqld-relay-bin.001731 Relay_Log_Pos: 10176595 Relay_Master_Log_File: mysql-bin.000470 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: 4255373725 Exec_Master_Log_Pos: 10176458 Relay_Log_Space: 135062517347 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: 1376343 1 row in set (0.00 sec)
如何修復它以便它們再次同步備份?謝謝你。
你似乎並不真正知道自己在做什麼。首先,您應該獲取數據轉儲以防止任何類型的損壞。
所以你使用的是主-主複製,對嗎?
這聽起來很奇怪,因為您只提供一個 SLAVE 狀態和一個 MASTER 狀態,但我們需要 MASTER 和兩個 SLAVE 狀態輸出。此外,沒有 replicate_ignore_* 語句,這看起來不像 Master-Master 複製。此外,SLAVE STATUS 中沒有錯誤語句。他們會顯示任何複製錯誤。
如何解決這個問題:從每個 master 獲取一個乾淨的轉儲並將其插入另一個 master。它在 mysql 手冊中有描述,這裡是簡短的版本:
mysql> FLUSH TABLES WITH READ LOCK; $> mysqldump -uroot -p<pass> --opt --all-databases | gzip --fast > dump_master1.sql.gz mysql> UNLOCK TABLES;
記住:不要只執行別人告訴你的命令!首先在手冊中查找它並檢查它的作用。將您的 SKIP_SLAVE_COUNTER 設置為 9999 是您新創建的表沒有出現在您的從屬設備上的原因,因為它跳過了 9999 條 sql 語句,這可能還沒有發生!通常你不會將 SKIP_SLAVE_COUNTER 設置為大於 1,然後執行 START SLAVE 並查看 SHOW SLAVE STATUS 是否有任何新錯誤。