You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS RDS中MySQL只读副本升级至8.0.x后复制中断的排查与解决

AWS RDS MySQL 5.7升级8.0时复制中断问题处理

操作背景

  • 基于AWS RDS中**5.7.44版本(已启用扩展支持)**的主库创建只读副本
  • 将副本的数据库、表、列、视图、触发器及存储过程逐一修改为字符集utf8mb4、排序规则utf8mb4_unicode_ci,直至升级检查器验证通过
  • 此时5.7.44版本主库(混合使用utf8/utf8_unicode_ci字符集)与副本可正常同步复制

环境差异与问题触发

  • 测试/UAT环境:将副本引擎升级至8.0.28后,可顺利提升副本为主库,并创建新的8.0.28版本只读副本,全程无异常
  • 生产环境:完成副本字符集调整后升级至8.0.28,复制立即中断,报错信息如下:

协调器因工作节点出错停止,最近一次失败:工作节点1执行事务'ANONYMOUS'时失败...
工作节点1在主日志mysql-bin-changelog.009309的end_log_pos 8019869处执行事务'ANONYMOUS'失败;表{TABLE NAME}的第4列无法从'char(3(bytes))'转换为'char(4(bytes) utf8mb4)',错误码:MY-013146

  • 尝试调用RDS内置存储过程mysql.rds_skip_repl_error跳过错误,但错误在两张表间交替出现,无法彻底解决
  • 该问题对应MySQL Bug #83461(覆盖5.7.10至8.0.0版本的复制中断场景),低流量测试环境未触发,仅在生产高流量场景复现
  • 5.7.x同版本间混合字符集配置下复制正常,重新准备副本耗时过长,希望避免停服升级

可行解决方案

参考MySQL Bug #78265的建议,在RDS参数组中设置slave_type_conversion参数值为ALL_NON_LOSSY(对应原生MySQL参数--slave-type-conversions=ALL_NON_LOSSY),配置完成后复制恢复正常。需注意,该Bug提及的差一错误在8.0.28版本中仍未修复。


内容的提问来源于stack exchange,提问作者johanmynhardt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 05:24:53