组复制官方翻译六、Upgrading Group Replication

栏目: 数据库 · 发布时间: 5年前

内容简介:这个章节主要描述升级MGR的计划基本的升级MGR成员的方法基本跟单独的实例升级一样(可参考 Section 2.11.1, “Upgrading MySQL”)

https://dev.mysql.com/doc/refman/8.0/en/group-replication-upgrade.html

这个章节主要描述升级MGR的计划

基本的升级MGR成员的方法基本跟单独的实例升级一样(可参考 Section 2.11.1, “Upgrading MySQL”)

选择in-place,还是logical方式升级取决于数据量大小

通常in-place升级会非常的快速,因此也是官方最推荐的

由于MGR是分布式的环境,所以在升级的时候有一些考虑,比如:成员升级的顺序问题等

如果你的MGR环境可以允许offline,那么就参考下列的Group Replication Offline Upgrade 方法

如果你的MGR环境需要在online进行,参考Group Replication Online Upgrade方法(极小的downtime)

18.6.1 Group Replication Offline Upgrade

对一个MGR进行offline升级的时候,你需要将成员从group中分别移除掉,然后升级成员,然后重启这个group

在 multi-primary环境下,你可以按照任何顺序shutdown组成员

在 single-primary环境下,先shutdown secondary成员节点,最后shutdown primary节点

如何移除成员节点,你可以参考 Section 18.6.2.3, “Upgrading a Group Replication Member”

一点group变成offline,你可以就想升级单独的实例一样升级他们,参考 Section 2.11.1, “Upgrading MySQL”

所有成员升级完毕后,在重启成员

18.6.2 Group Replication Online Upgrade

当你需要在线升级MGR,且不影响你的application,那么你就需要考虑下自己的方法了

这一节主要描述online升级的一些考虑,方法,和步骤

18.6.2.1 Online Upgrade Considerations

当你需要online升级的时候,需要考虑如下几个点:

  • 不管哪种升级group的方法,对组成员停写是至关重要的一步,直到它重新加入group

  • 当一个组成员stop的时候,super_read_only 会自动设置成on,但是这个改变不会被写入配置文件,并不持久

  • 当5.7.22或者8.0.11想要加入5.7.21或更低版本的group的时候会失败,因为5.7.21不会发送lower_case_table_names变量的值

18.6.2.2 Combining Group Replication Versions

不同版本的 MySQL 组合的GROUP可能会存在着不兼容性,这一章主要描述不同组合的最佳实践

如何查看版本

SELECT MEMBER_HOST,MEMBER_PORT,MEMBER_VERSION FROM performance_schema.replication_group_members;
+-------------+-------------+----------------+
| member_host | member_port | member_version |
+-------------+-------------+----------------+
| example.com | 3306 | 8.0.13 |
+-------------+-------------+----------------+

不同大版本group中的组合成员的规则如下:

  • 如果你跑着一个8.0版本的GR,你需要添加一个成员为5.7的,这样就不行

  • 如果你跑着一个5.7版本的GR,你需要添加一个8.0的成员是可以的,它必须保持read-only模式

不同小版本group中的组合成员的规则如下:

  • 如果是小版本的之间的差异,是可以的随时加入进来的,且可读可写。如果是single-primary group,添加的成员默认是read-only模式

18.6.2.3 Upgrading a Group Replication Member

这一小节主要描述升级组成员版本的基本步骤

这里面的步骤是Section 18.6.2.4, “Group Replication Online Upgrade Methods”. 提到步骤的一部分

升级组成员版本的步骤包括:将成员移除组,接下来选择你要升级的方法,然后重新加入升级过成员的group

single-primary模式下的推荐升级方法是: 先升级所有的secondaries,然后再primary节点

升级一个组成员的方法:

  • 连接一个成员,然后敲 STOP GROUP_REPLICATION. 在此之前,要确认下该成员状态是offline 通过 replication_group_members 表
  • 设置group_replication_start_on_boot=0 防止成员已启动就自动加入,会有安全隐患(在你还没upgrade mysql之前就自动加入了 等等情况)
  • 使用 mysqladmin shutdown关闭该成员,其他成员继续保持running
  • 使用in-place方式升级该成员,由于你没有设置group_replication_start_on_boot=1,所以重新启动升级过的成员时,它不会自动加入MGR
  • 一旦你使用mysql_upgrade升级成功后,再将 group_replication_start_on_boot 设置为1,这样可以确保之后重启服务器的时候可以自动加入进来
  • 链接到升级成功过后的该成员,敲 START GROUP_REPLICATION.重新加入group。该server的元数据会自动重新配置,且开始追数据,一旦数据追完,它将变成online状态

当升级成功的成员加入到group中的时候,只要group中还有早期的的版本成员在,那么该成员都会自动被设置成 super_read_only=on,不管它是primary还是secondary

这样可以保证升级后的成员不会有写,直到所有的版本全部一致

但是如果是multi-primary模式的group,一旦确认升级成功,这个group就可以处理事务,所以该模式下人工配置哪个可以写,哪个不可以写是非常重要的步骤

SET GLOBAL read_only=off;

18.6.2.4 Group Replication Online Upgrade Methods

  • Rolling In-Group Upgrade

对于single-primary的group,一旦所有secondary节点都升级了,然后primary节点从group中移除出去升级的时候,一个新的primary节点会自动被选择出来

对于multi-primary的group,直到所有成员都被升级了,你才需要手动的给所有成员设置 super_read_only=OFF

对于multi-primary的group,在上述过程中,所有primaries被降级,会降低可用性。但是在single-primary模式中,就不会有影响

  • Rolling Migration Upgrade

这个方法就是:你从组成员中移除成员,然后升级,然后用他们创建第二个group

对于multi-primary的group,在上述过程中,所有primaries被降级,会降低可用性。但是在single-primary模式中,就不会有影响

升级过程中,由于新版本的group为了追上老版本group的数据,因此在新版本的group中需要配置成老版本group中的slave角色

对于single-primary的group,该slave的角色,也必须是新版本group的primary角色

对于multi-primary的group,该slave的橘色,可以是任何一个primary角色

方法基本如下:

  • 在origin group中一个个的移除成员,参考 Section 18.6.2.3, “Upgrading a Group Replication Member”

  • 升级成员的版本 , 参考 Section 2.11.1, “Upgrading MySQL”.

  • 使用升级过的成员,创建一个新的group。你需要配置一个新的group name,因为老的name还在运行。

  • 创建一个异步复制通道在新老group中。老的group的priamry作为master,新的group成员作为GTID-based slave

在你切换应用之前,你必须确保你的新的group有比较合适的成员数量

敲SELECT * FROM performance_schema.replication_group_members来比对新老成员数量大小

最后,如果数据都同步完了,那么就可以停止复制,切换应用了

  • Rolling Duplication Upgrade

这个方法主要描述的是,如果在不减少原来group数量的同时,构建新group

因为很多时候,multi-primary都在提供业务,是不允许减少节点的

该处理方法是:

  • 部署合适数量成员的新group

  • 对老group的成员进行备份

  • 使用这个备份进行升级,参考 Section 18.6.2.5, “Group Replication Upgrade with mysqlbackup”

  • 使用升级好server进行构建一个新的group

  • 创建一个异步复制通道在新老group中。老的group的priamry作为master,新的group成员作为GTID-based slave

一旦新老group直接的数据差异越来越小,小到很快就能追上,那么就可以重新指向业务application

18.6.2.5 Group Replication Upgrade with mysqlbackup

步骤如下:

  • 使用mysqlbackup来备份老group的成员
  • 部署一个跟备份一样版本的成员实例
  • 使用mysqlbackup来恢复一个新成员实例
  • 在新实例上升级

以上所述就是小编给大家介绍的《组复制官方翻译六、Upgrading Group Replication》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

敏捷估计与规划

敏捷估计与规划

[美] Mike Cohn / 宋锐 / 清华大学出版社 / 2007-7 / 39.90元

《敏捷估计与规划》一书为对敏捷项目进行估计与规划提供了权威实际的指导方针。在本书中,敏捷联盟的共同创始人Mike Cohn讨论了敏捷估计与规划的思想,并使用现实的例子与案例分析向您详细地展示了如何完成工作。本书清晰地阐述了有关的概念,并引导读者逐步认识到下列一些问题的答案:我们要构建什么?它的规模有多大?需要在什么时候完成?到那个时候我们到底能完成多少?您首先会认识到优秀的计划由哪些东西组成,接着......一起来看看 《敏捷估计与规划》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器