我有一种情况,dns 服务器获取其主服务器的记录,并且所有记录都从主服务器复制到从服务器,而从服务器用于解析。 mysql 服务器升级后复制中断。 mysql 服务器停止,日志文件的名称和日志位置发生变化,直到 mysql 恢复。现在我知道如果我更改日志位置和日志文件名,复制将开始,但我会错过很多更新,这是我不想要的。我应该怎么做才能在不丢失主服务器上的任何更新的情况下重新启动主从复制。每一次更新都很重要。以下是从属状态的一些信息。
Slave_IO_Running: No
Slave_SQL_Running: Yes
Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'
谢谢
最佳答案
你可能会有一个惊喜,但这里是:
运行 SHOW SLAVE STATUS\G
。举个例子,假设你得到了这个:
Slave_IO_State: Waiting for master to send event
Master_Host: 10.64.68.253
Master_User: replusername
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.003202
Read_Master_Log_Pos: 577991837
Relay_Log_File: relay-bin.010449
Relay_Log_Pos: 306229695
Relay_Master_Log_File: mysql-bin.003202
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: 577991837
Relay_Log_Space: 306229695
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
您从显示中选择以下内容:
Relay_Master_Log_File
(mysql-bin.003202
)Exec_Master_Log_Pos
(577991837
)
原因如下:Relay_Master_Log_File
和 Exec_Master_Log_Pos
表示从 Master 发送到 Slave 并成功执行的 binlog 条目。只需从那里取货。
您只需运行此代码:Exec_Master_Log_Pos
STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.003202',
MASTER_LOG_POS=577991837;
START SLAVE;
试一试!!!
警告
如果 Relay_Master_Log_File
不再存在于 Master 上,您可能需要进行一些损害控制。鉴于前面提到的 SHOW SLAVE STATUS\G
,您可能必须跳到 Master 上的下一个二进制日志,如下所示:
STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.003203',
MASTER_LOG_POS=4;
START SLAVE;
如果复制 catch 来,你并没有走出困境。您可能需要下载 Percona Toolkit 并运行 pt-table-checksum和 pt-table-sync修复 Slave 上丢失的数据。
如果复制没有开始,您将必须执行尽职调查并重新加载从站。
希望如果复制与原始建议一致,您可能不必在此警告中执行任何操作。
关于mysql slave复制失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16389389/