案例 从 MySQL 8.0 升到 8.4 LTS:复制语法、已删变量与拆分的 FLUSH 权限迁移清单

2026-09-03 21:10:30

从 MySQL 8.0 升到 8.4(LTS):替换复制语法、删除的变量与拆分的 FLUSH 权限

从 MySQL 8.0 升级到 8.4(LTS),整体平滑,但一批被移除的语法和配置会在启动或运行时报错。按复制、过期变量、SQL/结构限制、权限四组逐项核对。

复制相关(最容易报错)

  • 旧复制语法在 8.4 中直接报语法错误:

    • CHANGE MASTER TOCHANGE REPLICATION SOURCE TO
    • SHOW SLAVE STATUSSHOW REPLICA STATUS
    • MASTER_HOST / MASTER_PASSWORD 等 → SOURCE_HOST / SOURCE_PASSWORD

    复制配置和客户端工具里的关键字都要同步替换。

  • 复制相关的过时选项也会报错,比如已废弃的 SOURCE_* 老式选项。

  • SOURCE_RETRY_COUNT 默认值改为 10,SOURCE_CONNECT_RETRY 默认值为 60 秒;升级后重连节奏和以前不一样。

过期变量 / 配置被删

  • expire_logs_days 已删除:运行时读写该变量会报错,改用 binlog_expire_logs_seconds,单位秒,默认 604800(7 天)。
  • default_authentication_plugin 不再生效:改用 authentication_policy 直接指定认证插件,如 caching_sha2_password
  • binlog_transaction_dependency_tracking 在 8.0.35 / 8.2 弃用,8.4 移除:多线程复制现在始终用 writeset 生成依赖信息,无需再设置。
  • character-set-client-handshake 兼容选项被弃用。

SQL / 结构限制

  • 自 8.4 起,FLOAT / DOUBLE 列上的 AUTO_INCREMENT 直接报错,自增只能用于整数类型。
  • 外键限制收紧:默认禁止在非唯一键或部分键上创建外键(restrict_fk_on_non_standard_key),非标设计需显式关闭该选项。
  • FLUSH HOSTS 语句废弃,改用 TRUNCATE TABLE performance_schema.host_cache

权限

新增 FLUSH_PRIVILEGES 权限;FLUSH_OPTIMIZER_COSTS / FLUSH_STATUS 相关权限拆细。原来靠 RELOAD 一把梭的账号,升级后如果只有旧 RELOAD 权限、缺少新增细分权限,部分 FLUSH 操作会失败。

升级前建议

先 grep 配置和代码里的旧变量/旧语法;再用 mysqldump --no-data 对 schema 预跑一遍校验。8.4 对行宽/默认值校验更严,参见另一篇 8.4.11 行宽变更。

参考:https://dev.mysqlserver.cn/doc/refman/8.4/en/mysql-nutshell.html

复制全文 生成海报 MySQL 升级 运维

推荐文章

程序员茄子在线接单