ITPub博客

首页 > 数据库 > > 16.1.4 Mysql 多源复制

16.1.4 Mysql 多源复制

作者:飘絮絮絮丶 时间:2020-05-11 13:52:18 0 删除 编辑

参考官方文档:
dev.mysql.com/doc/refma



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


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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946831/viewspace-3145091/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-09-09

  • 博文量
    2646
  • 访问量
    42290