mysql slave复制失败

use*_*819 4 mysql replication debian recovery

我有一种情况,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'
Run Code Online (Sandbox Code Playgroud)

谢谢

Rol*_*DBA 7

你可能会有一个惊喜,但现在是这样:

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
Run Code Online (Sandbox Code Playgroud)

您从显示中选择以下内容:

  • Relay_Master_Log_File(mysql-bin.003202)
  • Exec_Master_Log_Pos(577991837)

原因如下:Relay_Master_Log_File并且Exec_Master_Log_Pos表示来自Master的binlog条目,它已成为Slave并成功执行.只需从那里取货.

您只需运行此代码:Exec_Master_Log_Pos

STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.003202',
MASTER_LOG_POS=577991837;
START SLAVE;
Run Code Online (Sandbox Code Playgroud)

试试看 !!!

警告

如果Relay_Master_Log_File主人不再存在,你可能需要做一些伤害控制.鉴于SHOW SLAVE STATUS\G前面提到的,您可能必须跳到Master上的下一个二进制日志,如下所示:

STOP SLAVE;
CHANGE MASTER TO
MASTER_LOG_FILE='mysql-bin.003203',
MASTER_LOG_POS=4;
START SLAVE;
Run Code Online (Sandbox Code Playgroud)

如果复制赶上,你就不会走出困境.您可能必须下载Percona Toolkit并运行pt-table-checksumpt-table-sync来修复Slave上丢失的数据.

如果复制不起作用,您将不得不执行尽职调查并重新加载Slave.

希望,如果复制与原始建议一起使用,您可能不必在此警告中执行任何操作.