小编Cod*_*key的帖子

什么max_allowed_pa​​cket够大,为什么要改?

我在主从设置中有 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_pa​​cket; 在 master 上增加 max_allowed_pa​​cket'

但是,当我启动原始从站时,它赶上了,现在处于同步状态。

所以问题:

  • 当前值是16M,我怎么知道要走多大?(我宁愿避免在生产服务器上反复试验)。

  • 为什么我需要在原来的奴隶应付得很好的情况下增加主人的价值,问题真的出在新的奴隶身上吗?

更新

我将 max_allowed_pa​​cket 增加到 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_pa​​cket%';

在新的从站上显示max_allowed_packet …

mysql replication mysql-5.5

18
推荐指数
2
解决办法
5万
查看次数

标签 统计

mysql ×1

mysql-5.5 ×1

replication ×1