MySQL8.0支持在一个复制通道上配置多个可用复制源,当某个复制源不可用时,自动根据权重重新选择数据源进行同步。例如我们本地有一个跨机房的MGR高可用环境,计划在另一个地区的机房搭建一个异步复制节点做容灾。当MGR主节点发生切换时,就可以通过该特性在新主节点继续进行复制。
开启source_connection_auto_failover选项
1
2
3
4
5
6
7
8
9
|
change master to master_user='msandbox',
master_password='msandbox',
master_host='127.0.0.1',
master_auto_position=1,
source_connection_auto_failover=1,
master_port=23223,
master_retry_count=6,
master_connect_retry=10
for channel 'mgr';
|
master_retry_count和master_connect_retry表示重试多久切换复制源
配置asynchronous connection auto failover
参数语法
1
|
asynchronous_connection_failover_add_source(channel-name,host,port,network-namespace,weight)
|
- channel-name:通道名称
- host:节点地址
- port:节点端口
- network-namespace:网络区
- weight:权重,权重高的优先作为复制源,可配合MGR权重配置
添加复制源
1
|
SELECT asynchronous_connection_failover_add_source('mgr','127.0.0.1',23223,null,100);
|
检查复制
1
2
3
4
5
6
7
|
mysql> SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM
performance_schema.replication_connection_configuration;
+--------------+---------------------------------+
| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |
+--------------+---------------------------------+
| mgr | 1 |
+--------------+---------------------------------+
|