简短版本:可以从 5.5 主服务器复制到 5.1 从服务器吗?
长版本:我们进行了大规模升级,从 5.0 升级到 5.5。如果转储 400gb dbs 并将其导入 5.5,这是一个漫长的过程。
5.5 复制似乎完全中断了。主服务器持续挂起,从服务器不断断开/重新连接并留下陈旧的 binlog_dump 连接(从 show processlist 中可见)。主服务器在关机时挂起,直到关机一小时后“放弃”时,我不得不将其杀死。最后,它每天都会收到这种类型的错误“110423 13:55:48 [错误] 从属 SQL:无法在表 prod.site_iplist 上执行 Delete_rows 事件;在“site_iplist”中找不到记录,Error_code:1032;处理程序错误 HA_ERR_KEY_NOT_FOUND;事件的主日志 mysql-bin.000385,end_log_pos 65644796,Error_code:1032”,这是一个将在 5.5.12 中修复的错误。
这非常令人失望,因为我们的 5.0 设置已经运行良好 3 年了。
无论如何,我希望升级到 5.1.56(至少有 56 个稳定产品的更新)。问题是我所有的数据库现在都是 5.5。
是否可以有 5.5 主服务器和 5.1 从服务器?迁移过程是将数据库导入 5.1,然后启用复制,同步后将所有人故障转移到 5.1,然后在所有人都使用 5.1 数据库的情况下降级所有其他 5.5 服务器。
5.5 主服务器 --> 5.1 从服务器能正常工作吗?如果能,它能与当前的 MIXED 模式复制配合使用吗?我是否必须将其更改为仅语句?
谢谢!
答案1
你所尝试做的事情通常不受支持。引自MySQL 版本之间的复制兼容性文档:
MySQL 支持从一个主版本复制到下一个更高的主版本。例如,您可以从运行 MySQL 4.1 的主服务器复制到运行 MySQL 5.0 的从服务器,从运行 MySQL 5.0 的主服务器复制到运行 MySQL 5.1 的从服务器,等等。
和
从较新的主服务器到较旧的从服务器的复制可能是可行的,但通常不受支持。
它可能适用于这些版本,但远非推荐的设置。我的意见是:不要这样做。
另请阅读升级复制设置
换句话说,当升级到 MySQL 5.5 时,从属服务器必须是 MySQL 5.5,然后才能将主服务器升级到 5.5。
(也许是这个片段,尽管我不认为如果你重新导入到 5.1 它与此有直接关系)
一旦从基于语句的复制切换到基于行的复制,并且第一个基于行的语句已写入 binlog,就无法将复制设置降级到以前的版本。
答案2
另一件需要考虑的事情是:空二进制日志的大小
MySQL 5.5:107 字节
MySQL 5.1:106 字节
MySQL 5.0/4.x/3.x:98 字节
无法从较高版本复制到较低版本,因为标头信息的偏移量超出了较低版本可以读取的范围。
可以从较低版本复制到较高版本,因为标头信息偏移于高版本可以读取的内容之后。