我在主从设置中有 MySQL (5.5) 并创建了另一个从服务器。
我停止了原来的奴隶,转储了数据,复制并重新导入,它工作正常。我记下了原始从站的 master_log pos 并使用这些命令在新从站上设置它
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
Run Code Online (Sandbox Code Playgroud)
当我开始新的奴隶时,我得到了
Last_IO_Error:从二进制日志读取数据时从主服务器得到致命错误 1236:'日志事件条目超过 max_allowed_packet; 在 master 上增加 max_allowed_packet'
但是,当我启动原始从站时,它赶上了,现在处于同步状态。
所以问题:
当前值是16M,我怎么知道要走多大?(我宁愿避免在生产服务器上反复试验)。
为什么我需要在原来的奴隶应付得很好的情况下增加主人的价值,问题真的出在新的奴隶身上吗?
更新
我将 max_allowed_packet 增加到 1073741824,正如 Rolando 在 master、old slave 和 new slave 上建议的那样,并重新启动它们(SET GLOBAL max_allowed_packet = 1073741824;
由于某种原因似乎没有采取)
现在最后一个IO错误和以前一样,但现在我明白了
Last_SQL_Error:中继日志读取失败:无法解析中继日志事件条目。可能的原因有:master的二进制日志损坏(可以通过运行'mysqlbinlog'查看二进制日志),slave的relay log损坏(可以通过运行'mysqlbinlog'查看relay log),a网络问题,或者 master 或 slave 的 MySQL 代码中的错误。如果您想检查主站的二进制日志或从站的中继日志,您将能够通过在此从站上发出“显示从站状态”来知道它们的名称。
如果我在 master 的文件上做一个 mysqlbinlog,它会很高兴地滚动过去很长时间的命令 - 文件是 722M - 如果我为从中继日志这样做,我会得到
错误:Log_event::read_log_event() 中的错误:“健全性检查失败”,data_len:38916267,event_type:69
错误:无法读取偏移量 253 处的条目:日志格式错误或读取错误。
我检查了变量,但更改有效
mysql> 显示变量 LIKE '%max_allowed_packet%';
在新的从站上显示max_allowed_packet …