1 异步复制源架构
1.1基于主从复制的异步复制源
从MySQL 8.0.22开始支持异步连接故障转移机制,我们可以在一套主从复制架构的基础上,创建一个异步复制连接的Replica副本,当主从复制Source发生意外宕机,业务提升Replica为新的Source对外进行服务,异步连接Replica可自动检测主从架构源端连接异常,并重新指向新的Source进行数据复制。
架构图与流程展示:
- Source 、Replica为正常的主从复制架构,Async Replica为通过异步连接的复制副本
- 当主从复制架构中Source意外宕机,业务提升主从架构下Replica为New Source对外提供业务服务
- Async Replica检测连接原Source失败,将主从复制重新指向新的New Source进行数据复制
1.2 基于组复制的异步复制源
从MySQL 8.0.23开始支持对组复制的异步连接故障转移机制,异步连接副本的复制源添加组复制成员并定义为组管理后,异步连接副本可自动检测源MGR架构下的组复制角色(Prinary or Secondary),当组复制成员进行更新时,异步复制副本可自动更新复制源列表中的组成员信息。当异步连接复制节点复制源不可用时,自动切换选择组复制内可用节点进行复制。
架构图与流程展示:
- MGR单组架构下,新建一个Async Replica从组复制中Primary节点进行数据复制
- 当MGR架构中Primary节点宕机,MGR自身failover机制会选举某一Secondary节点为New Pirmary节点
- 异步连接Async Replica节点连接 Down Primary失败,自动检测组复制角色以及权重,选择可用节点为新的Source节点进行数据复制
2 异步连接failover前提与基本命令
2.1 前提
- 复制源与副本都需要开启GTID,方面搭建复制时使用auto_position模式(创建复制通道时使用 SOURCE_AUTO_POSITION | MASTER_AUTO_POSITION 参数)
- 异步连接复制对应的复制源中,所有节点都需要保持复制用户账号密码一致,方便进行复制源切换
- 复制用户额外授予以下权限
GRANT SELECT ON performance_schema.* TO 'repl_user';
2.2 基本命令
1、创建复制通道
mysql> CHANGE REPLICATION SOURCE TO MASTER_USER='rpl' # 复制源用户
, MASTER_PASSWORD='123' # 复制源密码
, MASTER_HOST='172.16.104.12', MASTER_PORT=3307 # 复制源IP、端口
, SOURCE_CONNECTION_AUTO_FAILOVER=1 # 复制源