你好,我已经使用 mysql 实用程序设置了一个 mysql 复制主从服务器,我的主服务器已经关闭,因为日志文件的磁盘空间已满,然后我更改了日志文件并启动主服务器,现在从服务器已停止给出主服务器磁盘已满的错误。
现在,当我尝试启动 mysql 复制时,它给出以下输出。请帮我解决这个问题。
sudo mysqlreplicate --master=user:password@IPaddress:3306 --slave=user:password@IPaddress:3306 --rpl-user=user:password
WARNING: Using a password on the command line interface can be insecure.
# master on 10.0.0.1: ... connected.
# slave on 10.0.0.2: ... connected.
# Checking for binary logging on master...
# Setting up replication...
ERROR: failed to sync slave with master.
ERROR: Cannot setup replication.
这是 show slave status\G 中的错误;
Last_IO_Errno:1236 Last_IO_Error:从二进制日志读取数据时,主服务器出现致命错误 1236:'binlog 在事件中间被截断;考虑主服务器上的磁盘空间不足;第一个事件'mysql-bin.000012'在 70361002,最后一个事件从'/app2/mysql/mysql-bin.000012'在 70361002 读取,最后一个字节从'/app2/mysql/mysql-bin.000012'在 70361088 读取。' –
答案1
这Percona 博客有一些关于如何处理这个问题的信息
— 从二进制日志读取数据时,主服务器出现致命错误 1236:‘binlog 在事件中间被截断;考虑主服务器上的磁盘空间不足;第一个事件‘mysql-bin.000525’在 175770780,最后一个事件从‘/data/mysql/repl/mysql-bin.000525’在 175770780 读取,最后一个字节从‘/data/mysql/repl/mysql-bin.000525′在 175771648 读取。’
通常这是由于sync_binlog <>1在主服务器上,这意味着二进制日志事件可能无法在磁盘上同步。主服务器上可能存在已提交的 SQL 语句或行更改(取决于您的复制格式),但由于事件被截断,因此无法将其传送到从属服务器。解决方案是将从属线程移动到下一个可用的二进制日志,并使用二进制日志上的第一个可用位置初始化从属线程,如下所示:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000526', MASTER_LOG_POS=4;
我想你这样做可能会丢失一些数据。