点击上方蓝字关注我们

点击上方蓝字关注我们






先决条件
1. 创建复制通道
replica> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='password', MASTER_HOST='node1', MASTER_PORT=3306, MASTER_RETRY_COUNT=2 FOR CHANNEL 'ch1';
2. 添加异步复制通道的备用源配置详细信息
SELECT asynchronous_connection_failover_add_source(channel, host, port, network_namespace, weight);
channel/host/port/network_namespace:复制通道连接属性,指定如何连接到此备用源。 weight:当指定了多个备用源时,故障转移操作将尝试连接到具有最高权重的源。如果未指定 weight,则默认为 50。
replica> SELECT asynchronous_connection_failover_add_source('ch1', 'node1', 3306, '', 80);+-----------------------------------------------------------------------------------------------------+| asynchronous_connection_failover_add_source('ch1', 'node1', 3306, '', 80) |+-----------------------------------------------------------------------------------------------------+| Source configuration details successfully inserted. |+-----------------------------------------------------------------------------------------------------+1 row in set (0,01 sec)replica> SELECT asynchronous_connection_failover_add_source('ch1', 'node2', 3306, '', 70);+-----------------------------------------------------------------------------------------------------+| asynchronous_connection_failover_add_source('ch1', 'node2', 3306, '', 70) |+-----------------------------------------------------------------------------------------------------+| Source configuration details successfully inserted. |+-----------------------------------------------------------------------------------------------------+1 row in set (0,01 sec)
replica> SELECT * FROM performance_schema.replication_asynchronous_connection_failover;+--------------+-----------+------+-------------------+--------+| CHANNEL_NAME | HOST | PORT | NETWORK_NAMESPACE | WEIGHT |+--------------+-----------+------+-------------------+--------+| ch1 | node1 | 3306 | | 80 || ch1 | node2 | 3306 | | 70 |+--------------+-----------+------+-------------------+--------+2 rows in set (0.00 sec)
3. 启用该功能
replica> CHANGE MASTER TO SOURCE_CONNECTION_AUTO_FAILOVER=1 FOR CHANNEL 'ch1';Query OK, 0 rows affected (0.12 sec)replica> SELECT CHANNEL_NAME, SOURCE_CONNECTION_AUTO_FAILOVER FROM performance_schema.replication_connection_configuration WHERE CHANNEL_NAME = 'ch1';+--------------------------+----------------------------------+| CHANNEL_NAME | SOURCE_CONNECTION_AUTO_FAILOVER |+--------------------------+----------------------------------+| ch1 | 1 |+--------------------------+----------------------------------+1 row in set (0.04 sec)
4. 启动副本通道
replica> START REPLICA FOR CHANNEL 'ch1';Query OK, 0 rows affected, 1 warning (0.03 sec)replica> select CHANNEL_NAME, SOURCE_UUID, SERVICE_STATE from performance_schema.replication_connection_status\G*************************** 1. row ***************************CHANNEL_NAME: ch1SOURCE_UUID: 14d730cf-200e-11eb-9d08-0010e0734796SERVICE_STATE: ON1 row in set (0.00 sec)
5. 在 source1 服务器上停止 mysqld
node1$ systemctl stop mysqld.service
6. 验证复制通道是否已自动故障转移,即连接到 source2
replica> START REPLICA FOR CHANNEL 'ch1';Query OK, 0 rows affected, 1 warning (0.03 sec)replica> select CHANNEL_NAME, SOURCE_UUID, SERVICE_STATE from performance_schema.replication_connection_status\G*************************** 1. row ***************************CHANNEL_NAME: ch1SOURCE_UUID: 14d730cf-200e-11eb-9d08-0010e0734796SERVICE_STATE: ON1 row in set (0.00 sec)
replica> START REPLICA FOR CHANNEL 'ch1';Query OK, 0 rows affected, 1 warning (0.03 sec)replica> select CHANNEL_NAME, SOURCE_UUID, SERVICE_STATE from performance_schema.replication_connection_status\G*************************** 1. row ***************************CHANNEL_NAME: ch1SOURCE_UUID: 14d730cf-200e-11eb-9d08-0010e0734796SERVICE_STATE: ON1 row in set (0.00 sec)
7. 删除源配置
SELECT asynchronous_connection_failover_delete_source(channel, host, port, network_namespace);
replica> START REPLICA FOR CHANNEL 'ch1';Query OK, 0 rows affected, 1 warning (0.03 sec)replica> select CHANNEL_NAME, SOURCE_UUID, SERVICE_STATE from performance_schema.replication_connection_status\G*************************** 1. row ***************************CHANNEL_NAME: ch1SOURCE_UUID: 14d730cf-200e-11eb-9d08-0010e0734796SERVICE_STATE: ON1 row in set (0.00 sec)

请注意,当 MySQL 路由器充当 MySQL InnoDB 集群前面的复制源终端节点时,此功能并不能完全取代 MySQL 路由器。最值得注意的是,此功能具有以下限制:
它不会自动了解新成员或已删除的成员;
它不遵循 Primary 角色,它与它所连接的任何主机都可以保持连接;
它不遵循多数网络分区;
它不在乎主机是否不再属于该组,只要它可以连接。
因此,请注意,在必须遵守此类要求的用例场景中,此功能不会取代路由器。


文章转载自KunlunBase 昆仑数据库,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。





