我有一个主从设置,网络上有 2 个服务器。由于错误,从服务器 IO 线程停止了,尽管我可以启动并运行它,但从服务器远远落后于主服务器。此外,SHOW SLAVE STATUS
显示Seconds_Behind_Master: 0
。请看:
Slave_IO_State: Waiting for master to send event
Master_Host: <master ip>
Master_User: replicator
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000722
Read_Master_Log_Pos: 101043816
Relay_Log_File: localhost-relay-bin.000008
Relay_Log_Pos: 101043961
Relay_Master_Log_File: mysql-bin.000722
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: 101043816
Relay_Log_Space: 101044163
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
从服务器是否直到最近才同步,所以我还没有从主服务器到从服务器拍摄快照。我应该这样做吗?
任何帮助都非常感谢。
提前致谢。
答案1
IO 线程的不寻常之处在于有时,如果网络层出现严重中断,IO 线程会直接停止读取,而不会意识到该级别。
对于数据本身,您只需拍摄快照,重置日志文件并通过更改主控,然后就大功告成了。但是,如果数据集太大,创建时间太长,则应该考虑使用 Percona 的数据同步工具。
我已经使用这些工具大约 2 年了,它们可以帮助您查找主服务器和从服务器之间表的差异,即使主服务器上的表是 InnoDB 而从服务器上的相同表是 MyISAM(前提是这些表具有相同的表结构)。
运行这些工具时必须启用复制。
顺便说一下,Percona 有一套新工具,叫做Percona 工具包。他们从自己的 MAATKIT 工具中分叉出来,制作出更好的工具。这些工具可能被称为 pt-table-checksum 和 pt-table-sync。