加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

16.1.4 Mysql 多源复制

发布时间:2022-09-30 06:33:40 所属栏目:MsSql教程 来源:转载
导读: 参考官方文档:
dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html
MySQL多源复制使复制从站能够同时从多个源接收事务。 多源复制可用于将多个服务器备份到单个服务器,合并

参考官方文档:

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

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

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;

STOP SLAVE thread_types FOR CHANNEL channel;

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

16.1.4.2.6 重置 多源复制slave

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

RESET SLAVE;

RESET SLAVE FOR CHANNEL channel;

16.1.4.3 多源复制监控

要监视复制通道的状态,需要以下选项:

注意:

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

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

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!