m6米乐安卓版下载-米乐app官网下载
2

mysql8 mgr集群间异步复制的故障转移 -m6米乐安卓版下载

2021-11-15
1157

mysql 8.0.22开始支持异步连接故障转移机制,在异步复制的主故障时,从库会基于配置的权重自动从备选主库列表中选择一个新的主库。8.0.23开始支持当源端是mgr时自动维护备选主库列表。8.0.27开始mgr集群(单主模式)作为备库时,如果备库的主发生切换则该机制将自动让新主从源库进行异步复制。

说人话就是从8.0.27开始,两个mgr集群间(备集群是单主模式)的异步复制,可以利用异步连接故障转移机制(asynchronous connection failover mechanism),实现集群节点级故障的auto failover。

使用这个机制需要满足以下要求:

  • 主备上必须开启gtid(gtid_mode=on),且配置复制时需开启master_auto_position
  • 同一channel的备选主库都必须存在相同的复制用户;且该用户需要赋予performance_schema.*的select权限
  • 要在change master语句中配置复制用户和密码,不能在start replication语句中指定
  • 8.0.27开始备集群的所有成员都需执行change replication source to命令配置异步复制channel。如想禁用此功能执行select group_replication_disable_member_action("mysql_start_failover_channels_if_primary", "after_primary_election");

下面简单测试下该机制的功能

1、搭建两个测试用mgr

为方便演示使用mysql shell 创建沙箱实例并配置mgr

dba.deploysandboxinstance(3315,{password:'123456'})
dba.deploysandboxinstance(3316,{password:'123456'})
dba.deploysandboxinstance(3317,{password:'123456'})
dba.deploysandboxinstance(3318,{password:'123456'})
dba.deploysandboxinstance(3319,{password:'123456'})
dba.deploysandboxinstance(3320,{password:'123456'})
#创建cluster1
\c root@127.0.0.1:3315
dba.createcluster('cluster1', {memberweight:50})
var mycluster = dba.getcluster()
mycluster.addinstance('root@127.0.0.1:3316', {memberweight:40})
mycluster.addinstance('root@127.0.0.1:3317', {memberweight:30})
#创建cluster2
\c root@127.0.0.1:3318
dba.createcluster('cluster2', {memberweight:50})
var mycluster = dba.getcluster()
mycluster.addinstance('root@127.0.0.1:3319', {memberweight:40})
mycluster.addinstance('root@127.0.0.1:3320', {memberweight:30})

2、配置从cluster1 到 cluster2的异步复制及故障转移

  • 创建用户
在master上执行
create user 'rep'@'%' identified by 'xxxxxx';
grant replication slave  on *.* to 'rep'@'%';
grant select on performance_schema.* to 'rep'@'%';
  • 配置异步复制
登录cluster2 的 所有节点执行【注意 这个命令必须在cluster2的所有节点运行】 change replication source to source_host='127.0.0.1',source_port=3315,source_user='rep',source_password='123456',source_auto_position=1,source_connection_auto_failover=1, master_retry_count=2 for channel 'channel999'; 登录cluster2 的primary节点执行 start replica for channel 'channel999';
  • 配置故障转移
#相关命令
asynchronous_connection_failover_add_managed(channel, managed_type, managed_name, host, port, network_namespace, primary_weight, secondary_weight)
其中
#channel:异步复制channel名
#managed_type:groupreplication
#managed_name:源端group_replication_group_name值
#host:源host
#port:源端口
#network_namespace:'' 空字符
#primary_weight:主的权重
#secondary_weight:备的权重
示例:
select asynchronous_connection_failover_add_managed('channel999', 'groupreplication', 'd78d94a3-45e5-11ec-a8b6-000c298c47fa', '127.0.0.1', 3315, '', 80, 60);
#查询performance_schema.replication_connection_configuration 确认规则已开启
select channel_name, source_connection_auto_failover from performance_schema.replication_connection_configuration where channel_name='channel999';


#查询performance_schema.replication_asynchronous_connection_failover_managed 确认规则已创建
#查询performance_schema.replication_asynchronous_connection_failover 确认备选主列表

3、测试源端主库故障转移

  • 当前复制状态

  • 关闭3315实例

  • 查看异步复制故障转移情况,可以看到已正常切换


  • 3315恢复后会自动加入备选主库列表中

  • 如果源端为单主模式,效果类似;但需注意primary_weight 和 secondary_weight 会影响备库的选择

  • 修改源端主备的权重

#删除原有策略
select asynchronous_connection_failover_delete_managed('channel999', 'd78d94a3-45e5-11ec-a8b6-000c298c47fa');
#新增策略修改备库的权重高于主库
select asynchronous_connection_failover_add_managed('channel999', 'groupreplication', 'd78d94a3-45e5-11ec-a8b6-000c298c47fa', '127.0.0.1', 3315, '', 60, 80);

4、测试目标端故障转移

8.0.27开始目标端是单主模式的mgr,异步同步模式下 primary切换后,新主会自动连接源端;

关闭3318实例,3319被选为primary,并且自动开始从源端同步



  • 如想禁用此功能,在primary上执行以下命令。这样primary切换后,新主不会自动启动同步
select  group_replication_disable_member_action("mysql_start_failover_channels_if_primary", "after_primary_election");

5、提示

  • 如未禁用目标端的故障转移mysql_start_failover_channels_if_primary,配置异步复制的命令change replication source to必须在备mgr所有节点执行
  • 删除策略执行命令select asynchronous_connection_failover_delete_managed('channel999', 'd78d94a3-45e5-11ec-a8b6-000c298c47fa');
  • 如源端为单主模式,设置故障切换策略asynchronous_connection_failover_add_managed 时如调整主备权重,会导致备mgr切换复制源;
最后修改时间:2021-11-16 09:46:55
「喜欢文章,快来给作者赞赏墨值吧」
【米乐app官网下载的版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
网站地图