原文:https://dev.mysql.com/doc/refman/5.7/en/replication-multi-source.html
MySQL多源复制概述
MySQL多源复制使复制从接受交易,同时从多个数据源。多源复制可以用来支持多个服务器,一个服务器,合并表碎片,并整合来自多个服务器,一个服务器的数据。多源复制不实施任何冲突检测和解决在交易,这些任务留给应用程序如果需要。在多源复制拓扑,奴隶创造每个主人应该从接收事务复制通道。看到第16.2.3,“复制通道”。以下各节描述如何建立多源复制。
多源复制教程
本节提供的教程如何配置多源复制主人和奴隶,以及如何启动、停止、复位多源的奴隶。
本节说明了如何配置一个多源复制拓扑,并提供有关如何配置主人和奴隶。这种拓扑结构需要至少两个主人和一个奴隶的配置。
在多源复制拓扑的主人可以配置全局事务标识符(gtid)为基础的复制,或二进制日志位置为基础的复制。看到第16.1.3.2,“设置复制使用gtids”如何使用gtid通过复制配置主。看到第16.1.2.1,“设置复制主配置”如何配置主使用基于位置的复制文件。
在多源复制拓扑的奴隶要求TABLE
基础信息库。多源复制不兼容文件
基础信息库。知识库使用的类型mysqld可以在启动配置或动态。
配置在启动复制奴隶使用库的类型,开始mysqld使用下列选项:
--master-info-repository=TABLE --relay-log-info-repository=TABLE
修改现有的复制的奴隶是用FILE
库的使用表
库,将现有的复制库动态运行下面的命令:
STOP SLAVE;
SET GLOBAL master_info_repository = 'TABLE';
SET GLOBAL relay_log_info_repository = 'TABLE';
本节假设您已经启用gtid基础交易大师使用gtid_mode=ON
,使复制的用户,并保证使用的奴隶表
基于复制的库。使用CHANGE MASTER TO
声明中添加一个新的主用通道通道
条款.在复制通道的更多信息,参见第16.2.3,“复制通道”channel
例如,添加主机名的新主人master1
使用端口3451
一个通道称为master-1
:
CHANGE MASTER TO MASTER_HOST='master1', MASTER_USER='rpl', MASTER_PORT=3451, MASTER_PASSWORD='',
MASTER_AUTO_POSITION = 1 FOR CHANNEL 'master-1';
多源复制与自动定位兼容。看到第13.4.2.1,“变化掌握语法”更多信息
每个额外的主要添加一个通道重复这一过程,改变主机名、端口和通道适当。
本节假设你已经启用了二进制日志的使用--log-bin
,使复制用户,指出当前的二进制日志中的位置,并确保使用的奴隶表
基于复制的库。你需要知道当前MASTER_LOG_FILE
和master_log_position
。使用CHANGE MASTER TO
声明中添加一个新的主人通过指定一个通道通道
条款.例如,添加主机名的新主人channel
master1
使用端口3451
一个通道称为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';
每个额外的主要添加一个通道重复这一过程,改变主机名、端口和通道适当。
一旦你添加所有你想要使用复制大师的渠道,使用START SLAVE
语句开始复制。当您启用了多渠道的一个奴隶,你可以选择开始的所有渠道,或选择一个特定的信道开始。thread_types
-
开始所有的当前配置的复制通道:
START SLAVE thread_types;
-
开始只是一个命名的通道,使用
FOR CHANNEL
条款:channel
START SLAVE thread_types FOR CHANNEL channel;
使用thread_types
选择你想要的特定线程的上述声明开始的奴隶。看到第13.4.2.6,“开始从语法”更多信息
这个STOP SLAVE
语句可用于阻止多源复制从。默认情况下,如果你使用停止奴隶
声明一个多源复制从所有渠道都停止了。或者,使用FOR CHANNEL
条款只是一个特定的通道停止。channel
-
停止所有当前配置的复制通道:
STOP SLAVE thread_types;
-
止命名通道,使用
FOR CHANNEL
条款:channel
STOP SLAVE thread_types FOR CHANNEL channel;
使用thread_types
选择你想要的特定线程的上述声明对奴隶停止。看到第13.4.2.7“停止从语法”更多信息
这个RESET SLAVE
语句可用于重置多源复制从。默认情况下,如果你使用复位的奴隶
声明一个多源复制从各种渠道复位。或者,使用FOR CHANNEL
条款重置只是一个特定的通道。channel
-
重置所有的当前配置的复制通道:
RESET SLAVE;
-
重置只命名通道,使用
FOR CHANNEL
条款:channel
RESET SLAVE FOR CHANNEL channel;
看到第13.4.2.4,“重置从语法”更多信息
多源监测复制
监控状态复制通道下列选项的存在:
-
使用复制性能模式表。这些表的第一列
Channel_Name
。这使您可以编写基于复杂查询channel_name
作为一个关键的。看到第25.11.11,绩效模式复制表” -
使用
SHOW SLAVE STATUS FOR CHANNEL
。默认情况下,如果channel
通道
条款是不能用的,这说明所有通道的奴隶地位每通道一行。标识符channel
channel_name
作为一个结果集中的列。如果一个FOR CHANNEL
设置条款,结果表明只有指定复制渠道现状。channel
这个SHOW VARIABLES
语句不多复制通道。这是可以通过这些变量的信息已经迁移到复制性能表。使用SHOW VARIABLES
在一个多通道的拓扑表显示只有默认的渠道现状。
本节说明如何使用复制性能监控的渠道模式表。你可以选择监控所有渠道,或一个子集的现有渠道。
监视所有通道的连接状态:
mysql> SELECT * FROM replication_connection_statusG;
*************************** 1. row ***************************
CHANNEL_NAME: master1
GROUP_NAME:
SOURCE_UUID: 046e41f8-a223-11e4-a975-0811960cc264
THREAD_ID: 24
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: 046e41f8-a223-11e4-a975-0811960cc264:4-37
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
*************************** 2. row ***************************
CHANNEL_NAME: master2
GROUP_NAME:
SOURCE_UUID: 7475e474-a223-11e4-a978-0811960cc264
THREAD_ID: 26
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: 7475e474-a223-11e4-a978-0811960cc264:4-6
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
2 rows in set (0.00 sec)
在上面的输出中有两通道启用,和所CHANNEL_NAME
它们被称为Master1
和master2
增加了CHANNEL_NAME
场允许你为一个特定的信道的性能模式表查询。监控指定通道的连接状态,使用WHERE CHANNEL_NAME=
条款:channel
mysql> SELECT * FROM replication_connection_status WHERE CHANNEL_NAME='master1'G
*************************** 1. row ***************************
CHANNEL_NAME: master1
GROUP_NAME:
SOURCE_UUID: 046e41f8-a223-11e4-a975-0811960cc264
THREAD_ID: 24
SERVICE_STATE: ON
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET: 046e41f8-a223-11e4-a975-0811960cc264:4-37
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
LAST_ERROR_TIMESTAMP: 0000-00-00 00:00:00
1 row in set (0.00 sec)
同样,该WHERE CHANNEL_NAME=
条款可以用来监视其他复制性能模式表为一个特定的通道。有关更多信息,参见第25.11.11,绩效模式复制表”channel
多源复制错误消息
错误代码和消息提供关于多源复制拓扑中遇到错误信息。这些错误代码和消息只时发出的多源复制启用,并提供所产生的误差通道的相关信息。例如:
从已经运行和从已停止已被替换复制线程(S)通道channel_name
已经运行和复制线程(S)通道channel_name
已经停止了分别
服务器日志消息也已经改变,表明通道的日志消息有关。这使得更容易调试和跟踪。