mysql多源复制 知乎_16.1.4 Mysql 多源复制

参考官方文档:

https://dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html

MySQL多源复制使复制从站能够同时从多个源接收事务。 多源复制可用于将多个服务器备份到单个服务器,合并表分片,以及将来自多个服务器的数据合并到单个服务器。 应用事务时,多源复制不会实现任何冲突检测或解决,如果需要,这些任务将留给应用程序。 在多源复制拓扑中,从属服务器为每个应从其接收事务的主服务器创建复制通道。 请参见第16.2.3节“复制通道”。 以下部分介绍如何设置多源复制

配置多源复制

本节介绍如何配置多源复制拓扑,并提供有关配置主站和从站的详细信息。 这种拓扑需要至少两个主设备和一个从设备配置。

多源复制拓扑中的从站需要基于TABLE的存储库。 多源复制与基于FILE的存储库不兼容。 mysqld使用的存储库类型可以在启动时动态配置,也可以动态配置。

要在启动时配置复制从站使用的存储库类型,请使用以下选项启动mysqld:

--master-info-repository=TABLE --relay-log-info-repository=TABLE

要修改现有使用FILE存储库的复制slave以使用TABLE存储库,请通过运行以下命令动态转换现有复制存储库:

STOP SLAVE;

SET GLOBAL master_info_repository = 'TABLE';

SET GLOBAL relay_log_info_repository = 'TABLE';

16.1.4.2.2将基于GTID的主服务器添加到多源复制slave

本节假定您已使用gtid_mode = ON在主服务器上启用了基于GTID的事务,启用了复制用户,并确保从服务器正在使用基于TABLE的复制存储库。 使用CHANGE MASTER TO语句通过使用FOR CHANNEL通道子句将新主服务器添加到通道。 有关复制通道的更多信息,请参见第16.2.3节“复制通道”

例如,要使用端口3451将主机名master1的新主站添加到名为master-1的通道:

CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='rpl', MASTER_PORT=3451, MASTER_PASSWORD='', \ MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-1';

对要添加到通道的每个额外master重复此过程,根据需要更改主机名,端口和通道。

16.1.4.2.3 将基于二进制日志的主服务器添加到多源复制从服务器

本节假定您已使用--log-bin启用了主服务器上的二进制日志记录,启用了复制用户,记录了当前的二进制日志位置,并确保从服务器正在使用基于TABLE的复制存储库。 您需要知道当前的MASTER_LOG_FILE和MASTER_LOG_POSITION。 使用CHANGE MASTER TO语句通过指定FOR CHANNEL通道子句将新主控添加到通道。 例如,要使用端口3451将主机名master1的新主站添加到名为master-1的通道:

CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='rpl', MASTER_PORT=3451, MASTER_PASSWORD='' \ MASTER_LOG_FILE='master1-bin.000006', MASTER_LOG_POS=628 FOR CHANNEL 'master-1';

对要添加到通道的每个额外主站重复此过程,根据需要更改主机名,端口和通道。

16.1.4.2.4启动多源复制slave

添加了要用作复制主的所有通道后,请使用START SLAVE thread_types语句启动复制。 在从站上启用多个通道后,您可以选择启动所有通道,也可以选择要启动的特定通道。要启动所有当前配置的复制通道:

START SLAVE thread_types;要仅启动命名通道,请使用FOR CHANNEL通道子句:

START SLAVE thread_types FOR CHANNEL channel;

使用thread_types选项选择希望上述语句在从站上启动的特定线程。

16.1.4.2.5 停止多源复制slave

STOP SLAVE语句可用于停止多源复制从站。 默认情况下,如果在多源复制从站上使用STOP SLAVE语句,则所有通道都将停止。 可选的 ,使用FOR CHANNEL通道子句仅停止特定通道。要停止所有当前配置的复制通道:

STOP SLAVE thread_types;要仅停止命名通道,请使用FOR CHANNEL通道子句:

STOP SLAVE thread_types FOR CHANNEL channel;

使用thread_types选项选择希望上述语句在从站上停止的特定线程。

16.1.4.2.6 重置 多源复制slave

RESET SLAVE语句可用于重置多源复制从站。 默认情况下,如果在多源复制从站上使用RESET SLAVE语句,则会重置所有通道。 可选的,使用FOR CHANNEL通道子句仅重置特定通道。要重置所有当前配置的复制通道:

RESET SLAVE;要仅重置命名通道,请使用FOR CHANNEL通道子句:

RESET SLAVE FOR CHANNEL channel;

16.1.4.3 多源复制监控

要监视复制通道的状态,需要以下选项:使用复制性能方案表。 这些表的第一列是Channel_Name。 这使您可以基于Channel_Name作为键来编写复杂查询。

使用SHOW SLAVE STATUS FOR CHANNEL channel。 默认情况下,如果未使用FOR CHANNEL通道子句,则此语句显示所有通道的slave状态,每个通道一行。 标识符Channel_name将添加为结果集中的列。 如果提供了FOR CHANNEL通道子句,则结果仅显示指定复制通道的状态。

注意:

SHOW VARIABLES语句不适用于多个复制通道。 这些变量可用的信息已迁移到复制性能表。 在具有多个通道的拓扑中使用SHOW VARIABLES语句仅显示默认通道的状态。

16.1.4.3.1 使用性能方案表监控通道

监控所有通道的连接状态:

mysql> SELECT * FROM replication_connection_status\G;

通过添加CHANNEL_NAME字段,您可以查询特定通道的性能架构表。 要监视命名通道的连接状态,请使用WHERE CHANNEL_NAME = channel子句:

mysql> SELECT * FROM replication_connection_status WHERE CHANNEL_NAME='master1'\G

同样,WHERE CHANNEL_NAME = channel子句可用于监视特定通道的其他复制性能架构表。

16.1.4.4 多源复制错误信息

错误代码和消息提供有关多源复制拓扑中遇到的错误的信息。 这些错误代码和消息仅在启用多源复制时发出,并提供与生成错误的通道相关的信息。 例如:

Slave is already running 和 Slave is already stopped 被替换为 Replication thread(s) for channelchannel_name are already running 和 Replication threads(s) for channelchannel_name are already stopped

服务器日志消息也已更改,以指示日志消息与哪个通道相关。 这使得调试和跟踪更容易。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值