求教,mysql主从复制,主表插入数据后,从表未同步,且状态异常

发布于 2022-09-07 16:54:22 字数 2365 浏览 28 评论 0

问题大概是这样的:mysql主从复制,配置好之后,查看从表状态正常:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
然后在主表插入数据,从表未同步,状态异常:
Slave_IO_Running: Yes
Slave_SQL_Running: No

具体情况如下:
主库在windows上,从库在虚拟机上;
主库配置 my.ini

[mysqld] 
# 主从配置
# 日志文件名以“mysql-bin”作为前缀
log-bin=mysql-bin
server-id=1
binlog-do-db=blog

从库配置 my.cfg

[mysqld]
server-id = 2
port = 3306
log-bin=mysql-bin
binlog_format=mixed

windows执行show master status;显示如下

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000035 |     1253 | blog         |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

虚拟机执行

stop slave;

CHANGE MASTER TO MASTER_HOST='192.168.1.110', 
MASTER_USER='root', 
MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-bin.000035', 
MASTER_LOG_POS=1253;

start slave;

show slave status \G;

显示如下

clipboard.png

红色部分这里看着是没问题的

然后在主表执行一条insert语句之后,再执行show slave status \G;命令后,
主表数据插入成功,从表未同步,且状态异常:
Slave_IO_Running: Yes
Slave_SQL_Running: No

clipboard.png

last error 信息

Last_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.

使用 mysqlbinlog relay-log.info查看日志看到如下错误
ERROR: File is not a binary log file.
请问可能是哪里出了问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

冧九 2022-09-14 16:54:23

解决了,是因为mysql版本不一致造成的,主库是windows的5.7版本,从库是centos的5.5。
我判断是因为从库mysql的mysqlbinlog版本太低,无法读取主库的binlog日志,导致无法同步

注定孤独终老 2022-09-14 16:54:23

error意思是binlog不是二进制文件,你还是都用windows吧,从库也在windows上好了。
或者都用docker,配起来快:repl,这个库里我就放了一主一从。

白芷 2022-09-14 16:54:23

主库是windows,从库是Linux吗?

弥枳 2022-09-14 16:54:23

修改你从库的binlog_format=mixed改成row格式,mixed造成的问题比较多,因为没看到你的版本和主库的binlog_format信息,所以如果主库的binlog格式也是mixed或者statment格式,建议都改成row格式。
ps:推荐还是使用linux下的mysql。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文