从服务器上的 mysql 复制中断(错误 1236)

ona*_*var 5 mysql replication

我的问题是:如何修复从服务器上损坏的 mysql 复制(错误 1236)?

服务器 1 (192.168.1.105) 服务器 2 (192.168.1.106)

我运行了这些步骤来重新同步:

在主服务器 1 (192.168.1.105) 上:

mysql -u root -p
Run Code Online (Sandbox Code Playgroud)
  1. 重置主机;
  2. 带读锁的冲洗表;
  3. 显示主状态;
  4. 注意 > 文件:mysql-bin.000001 和位置:107
  5. mysqldump -uroot -p --events --ignore-table=mysql.events --all-databases > /var/backups/mysqldump.sql
  6. 解锁表;
  7. 将 mysql 转储文件复制到服务器 2
    ( scp -p /var/backups/mysqldump.sql root@192.168.1.106:/tmp)

在从服务器 1 (192.168.1.106) 上:

  1. 停止奴隶;
  2. mysql -uroot -p < /tmp/mysqldump.sql
  3. 重置从机;
  4. 将 MASTER 更改为 MASTER_HOST='192.168.1.105', MASTER_USER='slaveuser', MASTER_PASSWORD='mypassword';
  5. CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
  6. 启动从机;

我仍然在服务器 1 上遇到此错误

Last_IO_Errno: 1236 Last_IO_Error: 从二进制日志读取数据时从主服务器得到致命错误 1236: '无法在二进制日志索引文件中找到第一个日志文件名'

小智 10

我相信需要与主机指定日志文件和位置。

尝试:

CHANGE MASTER TO MASTER_HOST='192.168.1.105', MASTER_USER='slaveuser', MASTER_PASSWORD='mypassword', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
Run Code Online (Sandbox Code Playgroud)


Bil*_*win 3

如果在从属服务器上恢复数据库需要很长时间,则在启动从属服务器时,日志文件 mysql-bin.000001 可能会从主服务器中清除。当您在从站上出现错误时,请SHOW BINARY LOGS在主站上运行并查看 mysql-bin.000001 是否消失。

您还应该查看设置以expire_logs_days确保二进制日志文件不会过快过期。

您可以做的另一件事来补偿是,在从服务器上,一旦您在主服务器上解锁表:

  1. 停止奴隶;
  2. 重置从机;
  3. 将主机更改为 MASTER_HOST='192.168.1.105', MASTER_USER='slaveuser', MASTER_PASSWORD='mypassword';
  4. 将主更改为 MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
  5. 启动从IO_THREAD;
  6. 从 master 复制 mysql 转储
  7. mysql -uroot -p < /tmp/mysqldump.sql
  8. 启动从 SQL_THREAD;

这应该会在您进行恢复时开始下载二进制日志,这样您就不会错过任何内容。