内容提要
MySQL Server 8.3 引入了新功能,如扩展的全局事务标识符、JSON 输出格式选项和基于 SASL 的 LDAP 认证。被弃用和移除的功能包括组复制恢复的更改、某些 MySQL C API 函数的移除以及编译服务器的过时选项。还进行了错误修复和改进。升级建议包括备份数据库、查看被弃用的功能和变量,以及首先在测试环境中测试升级。
延伸解读
升级前必须检查的移除项
MySQL 8.3 移除了多个已弃用功能,包括部分 MySQL C API 函数、FLUSH HOSTS 语句以及一些复制相关的选项和变量。如果现有应用或脚本依赖这些功能,升级后可能直接报错。建议在测试环境中逐一验证,并提前将 FLUSH HOSTS 替换为 TRUNCATE TABLE performance_schema.host_cache 或 mysqladmin flush-hosts。
复制与组复制的行为变化
组复制恢复不再依赖将视图更改事件写入二进制日志,而是通过压缩的恢复元数据共享。同时,使用 GTID 复制时,已应用的事务会被自动忽略。这些变化可能影响复制拓扑的监控和故障恢复流程,建议在升级前检查复制相关配置,并确保所有组成员版本一致。
新特性对运维的实用价值
扩展的 GTID 格式允许为特定事务组分配唯一名称,便于识别和追踪。EXPLAIN FORMAT=JSON 支持两种输出格式,可通过 explain_json_format_version 变量选择。数据掩码组件支持指定专用架构存储内部表和函数,提升了灵活性。这些改进有助于日常运维和调试。
升级操作的关键步骤
升级前需确保拥有 root 访问权限,备份所有数据库,并检查升级路径是否受支持。仔细审查被弃用的功能和变量,若仍在使用,需评估是否继续升级或修改应用。务必先在测试环境验证,再在生产环境执行升级,以降低风险。
Q&A
MySQL 8.3 有哪些新特性?
MySQL 8.3 引入了扩展的全局事务标识符(GTID)格式,允许为特定事务组分配唯一名称;支持选择两种 JSON 输出格式,通过 explain_json_format_version 系统变量设置;新增基于 SASL 的 LDAP 认证,允许 Windows 客户端使用 GSSAPI/Kerberos;数据掩码组件支持指定专用架构存储内部表和掩码函数;线程池连接信息加入 Performance Schema;新增 SET_ANY_DEFINER 和 ALLOW_NONEXISTENT_DEFINER 权限。
MySQL 8.3 移除了哪些功能?
MySQL 8.3 移除了多个之前已弃用的 MySQL C API 函数;移除了 FLUSH HOSTS 语句(可使用 TRUNCATE TABLE performance_schema.host_cache 或 mysqladmin flush-hosts 替代);移除了部分与复制相关的选项和变量;移除了编译服务器的过时 CMake 选项;组复制恢复不再依赖将视图更改事件写入二进制日志。
升级到 MySQL 8.3 前需要做哪些准备?
升级前应确保拥有 root 访问权限;备份数据库;检查可用的升级路径;审查被弃用和移除的功能及变量,若在使用需考虑修改;如果使用复制,检查相关部分;查看升级最佳实践;最后在测试环境中先进行升级,验证无误后再在生产服务器上执行。
MySQL 8.3 中 GTID 格式有什么变化?
MySQL 8.3 扩展了全局事务标识符(GTID)的格式,使其能够识别事务组。现在可以为属于特定事务组的 GTID 分配唯一名称。
MySQL 8.3 中如何设置 JSON 输出格式?
在 MySQL 8.3 中,可以通过 explain_json_format_version 服务器系统变量选择两种 EXPLAIN FORMAT=JSON 语句的 JSON 输出格式版本。
MySQL 8.3 中 FLUSH HOSTS 被移除后,如何清除主机缓存?
FLUSH HOSTS 语句在 MySQL 8.3 中被移除。要清除主机缓存,可以使用 TRUNCATE TABLE performance_schema.host_cache 或 mysqladmin flush-hosts 命令。