为什么宝塔面板数据库同步工具在版本不一致时,源端与目标端MySQL版本差异导致报错?
- 内容介绍
- 文章标签
- 相关推荐
本文共计965个文字,预计阅读时间需要4分钟。
宝塔数据库同步功能底层调用的主要是MySQL原生主从复制,错误信息几乎全部来自MySQL自身。界面UI只是将错误折叠或翻译成模糊提示(例如“同步异常)。真正线上的全量备份在+SHOW SLAVE STATUS+输出里。”
常见版本相关错误有两类:
-
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids→ 主从server-id冲突,不是版本问题,但常被误判 -
Last_SQL_Error: Error 'Unknown system variable 'default_table_encryption'' on query→ 从库是 5.7,主库是 8.0,该变量 5.7 不识别 -
Last_SQL_Error: Function JSON_EXTRACT does not exist→ 主库用了 5.7 不支持的 JSON 函数,且 binlog 是 STATEMENT 格式(已执行语句直接重放)
MySQL 5.7 与 8.0 同步必须禁用 GTID 和跳过新特性
宝塔默认启用 GTID(gtid_mode=ON),但 5.7 不支持 GTID 复制(仅 5.7.6+ 支持但需额外配置,且和 8.0 兼容极差)。
本文共计965个文字,预计阅读时间需要4分钟。
宝塔数据库同步功能底层调用的主要是MySQL原生主从复制,错误信息几乎全部来自MySQL自身。界面UI只是将错误折叠或翻译成模糊提示(例如“同步异常)。真正线上的全量备份在+SHOW SLAVE STATUS+输出里。”
常见版本相关错误有两类:
-
Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids→ 主从server-id冲突,不是版本问题,但常被误判 -
Last_SQL_Error: Error 'Unknown system variable 'default_table_encryption'' on query→ 从库是 5.7,主库是 8.0,该变量 5.7 不识别 -
Last_SQL_Error: Function JSON_EXTRACT does not exist→ 主库用了 5.7 不支持的 JSON 函数,且 binlog 是 STATEMENT 格式(已执行语句直接重放)
MySQL 5.7 与 8.0 同步必须禁用 GTID 和跳过新特性
宝塔默认启用 GTID(gtid_mode=ON),但 5.7 不支持 GTID 复制(仅 5.7.6+ 支持但需额外配置,且和 8.0 兼容极差)。

