我的问题是:如何修复从服务器上损坏的 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)
mysqldump -uroot -p --events --ignore-table=mysql.events --all-databases > /var/backups/mysqldump.sql
scp -p /var/backups/mysqldump.sql root@192.168.1.106:/tmp
)在从服务器 1 (192.168.1.106) 上:
mysql -uroot -p < /tmp/mysqldump.sql
我仍然在服务器 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)
如果在从属服务器上恢复数据库需要很长时间,则在启动从属服务器时,日志文件 mysql-bin.000001 可能会从主服务器中清除。当您在从站上出现错误时,请SHOW BINARY LOGS
在主站上运行并查看 mysql-bin.000001 是否消失。
您还应该查看设置以expire_logs_days
确保二进制日志文件不会过快过期。
您可以做的另一件事来补偿是,在从服务器上,一旦您在主服务器上解锁表:
- 停止奴隶;
- 重置从机;
- 将主机更改为 MASTER_HOST='192.168.1.105', MASTER_USER='slaveuser', MASTER_PASSWORD='mypassword';
- 将主更改为 MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=107;
- 启动从IO_THREAD;
- 从 master 复制 mysql 转储
- mysql -uroot -p < /tmp/mysqldump.sql
- 启动从 SQL_THREAD;
这应该会在您进行恢复时开始下载二进制日志,这样您就不会错过任何内容。