MySQL 8.4.0 LTS 变更解析:MySQL 的复制与组复制
MySQL 8.4.0 LTS 已经发布 ,作为发版模型变更后的第一个长期支持版本,注定要承担未来生产环境的重任,那么这个版本都有哪些新特性、变更,接下来少安将带大家一起来 get 新知识点。
环境准备
本节内容继续沿用前文的环境,不同的是在前文的基础之上搭建了主从复制。
这里启动两个DB服务来验证复制的相关变更,分别监听3306和3316端口。
1 | [mysql@shawnyan build]$ ./bin/mysql -uroot -h127.1 -P3306 -e 'select @@server_id' -E |
- 创建复制用户
1 | CREATE USER 'replica' IDENTIFIED BY 'replica'; |
- 配置复制源
1 | CHANGE REPLICATION SOURCE TO |
- 启动复制
这里为了安全考虑,不推荐将 user/password 信息配置在创建复制源语句,而是在启动复制语句中设定。
1 | START REPLICA USER = 'replica' PASSWORD = 'replica'; |
- 查看复制状态
1 | mysql> show replica status\G |
从 MySQL 8.4.0 LTS 开始,master/slave 见上帝去了,以后都将与 replica 伴舞。
复制 SQL 语句
之前版本的 MySQL 中已弃用的与 MySQL 复制相关的许多功能的语法现已删除,具体清单如下。
Removed | Replacements |
---|---|
START SLAVE | START REPLICA |
STOP SLAVE | STOP REPLICA |
SHOW SLAVE STATUS | SHOW REPLICA STATUS |
SHOW SLAVE HOSTS | SHOW REPLICAS |
RESET SLAVE | RESET REPLICA |
CHANGE MASTER TO | CHANGE REPLICATION SOURCE TO |
RESET MASTER | RESET BINARY LOGS AND GTIDS |
SHOW MASTER STATUS | SHOW BINARY LOG STATUS |
PURGE MASTER LOGS | PURGE BINARY LOGS |
SHOW MASTER LOGS | SHOW BINARY LOGS |
如果继续沿用之前的语法,会直接抛出错误。
1 | mysql> start slave; |
SQL 语句选项
CHANGE REPLICATION SOURCE TO
语句的选项,发生了移除、替换变更,清单如下:
Removed | Replacements |
---|---|
MASTER_AUTO_POSITION | SOURCE_AUTO_POSITION |
MASTER_HOST | SOURCE_HOST |
MASTER_BIND | SOURCE_BIND |
MASTER_USER | SOURCE_USER |
MASTER_PASSWORD | SOURCE_PASSWORD |
MASTER_PORT | SOURCE_PORT |
MASTER_CONNECT_RETRY | SOURCE_CONNECT_RETRY |
MASTER_RETRY_COUNT | SOURCE_RETRY_COUNT |
MASTER_DELAY | SOURCE_DELAY |
MASTER_SSL | SOURCE_SSL |
MASTER_SSL_CA | SOURCE_SSL_CA |
MASTER_SSL_CAPATH | SOURCE_SSL_CAPATH |
MASTER_SSL_CIPHER | SOURCE_SSL_CIPHER |
MASTER_SSL_CRL | SOURCE_SSL_CRL |
MASTER_SSL_CRLPATH | SOURCE_SSL_CRLPATH |
MASTER_SSL_KEY | SOURCE_SSL_KEY |
MASTER_SSL_VERIFY_SERVER_CERT | SOURCE_SSL_VERIFY_SERVER_CERT |
MASTER_TLS_VERSION | SOURCE_TLS_VERSION |
MASTER_TLS_CIPHERSUITES | SOURCE_TLS_CIPHERSUITES |
MASTER_SSL_CERT | SOURCE_SSL_CERT |
MASTER_PUBLIC_KEY_PATH | SOURCE_PUBLIC_KEY_PATH |
GET_MASTER_PUBLIC_KEY | GET_SOURCE_PUBLIC_KEY |
MASTER_HEARTBEAT_PERIOD | SOURCE_HEARTBEAT_PERIOD |
MASTER_COMPRESSION_ALGORITHMS | SOURCE_COMPRESSION_ALGORITHMS |
MASTER_ZSTD_COMPRESSION_LEVEL | SOURCE_ZSTD_COMPRESSION_LEVEL |
MASTER_LOG_FILE | SOURCE_LOG_FILE |
MASTER_LOG_POS | SOURCE_LOG_POS |
系统状态变量
MySQL 服务器中的多个系统状态变量也发生了变更,具体清单如下。
Removed | Replacements |
---|---|
Com_slave_start | Com_replica_start |
Com_slave_stop | Com_replica_stop |
Com_show_slave_status | Com_show_replica_status |
Com_show_slave_hosts | Com_show_replicas |
Com_show_master_status | Com_show_binary_log_status |
Com_change_master | Com_change_replication_source |
组复制
1. group_replication_allow_local_lower_version_join 系统变量弃用
group_replication_allow_local_lower_version_join 是 5.7.17 引入的系统变量,表示当前服务器的插件版本比组的插件版本低时也允许加入组。
从 8.4.0 开始被弃用,如果更改值将会抛出如下警告。
1 | mysql> set global group_replication_allow_local_lower_version_join = 1; |
2. group_replication_recovery_complete_at 系统变量被移除
group_replication_allow_local_lower_version_join 是 5.7.17 引入的系统变量,表示状态传输后处理缓存中的事务时的恢复策略。在 8.0.34 中被废弃。
从此版本开始,分布式恢复过程中应用的策略始终是仅在新成员收到、认证并应用其加入组之前发生的所有事务后才将其标记为在线; 这相当于在以前版本的 MySQL 中将 group_replication_recovery_complete_at 设置为 TRANSACTIONS_APPLIED。
3. 系统变量默认值变更
- group_replication_consistency 系统变量的默认值现在是 BEFORE_ON_PRIMARY_FAILOVER ; 以前是 EVENTUAL 。
在组复制单主模式下,设定为 BEFORE_ON_PRIMARY_FAILOVER 时,新主有未应用的backlog时,客户端的请求会等到,直到应用为止,以此确保事务一致性。
- group_replication_exit_state_action 系统变量的默认值现在是 OFFLINE_MODE 。
该变量在 8.0.16 及以上版本的默认值为 READ_ONLY,从 8.0.18 增加 OFFLINE_MODE 选项。
如果成员无意中退出组或用尽自动重新加入尝试,实例会将 MySQL 切换到离线模式。在此模式下,已连接的客户端用户在下一个请求时将断开连接,并且不再接受连接,具有 CONNECTION_ADMIN 权限(或已弃用的 SUPER 权限)的客户端用户除外。
版本升级
这里有几点升级的注意事项或建议,以供参考。
-
MySQL 5.7 不支持直接升级到 MySQL 8.4,需要先升级到 MySQL 8.0 再过渡到 8.4。
-
MySQL 8.4 移除了对 8.0 早期版本的一些特殊处理,建议在升级到 8.4 之前,先升级到 8.0 最新版本。
-
当前 MySQL 8.0 系列的最新版本为 MySQL 8.0.37
总结
本章节我们介绍了编译 MySQL 8.4.0 LTS 源码需要注意几点变更,以及连接数据库时认证插件发生的变化。
下一节我们继续介绍其他新特性,欢迎关注本专栏。
往期精彩
- MySQL 8.4.0 LTS 发布 (MySQL 第一个长期支持版本)
- Oracle 数据库全面升级为 23ai
- 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
- SOP for Oracle 23ai:Python 连接 Oracle 的两种方法
– END –
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)
- Title: MySQL 8.4.0 LTS 变更解析:MySQL 的复制与组复制
- Author: ShawnYan
- Created at: 2024-05-16 21:00:00
- Updated at: 2024-05-16 21:00:00
- Link: https://shawnyan.cn/2024/mysql/mysql-8-4-0-lts-change-replica/
- License: This work is licensed under CC BY-NC-SA 4.0.