MySQL 中多源复制不起作用

MySQL 中多源复制不起作用

我正在尝试设置多源复制。在我的从属服务器中,我已在其配置文件中定义了以下两个属性。

master-info-repository=table  
relay-log-info-repository=table

需要这些条目是因为我在命令“CHANGE MASTER TO”中定义通道,如下所示:

change master to master_host="127.0.0.1", master_port=20000, master_user="replication",master_password="password1" for channel="master1";

上述命令显示错误:

错误 1794 (HY000):从服务器未配置或无法正确初始化。您必须至少设置 --server-id 才能启用主服务器或从服务器。其他错误消息可在 MySQL 错误日志中找到。

服务器 ID 在配置文件中有明确定义。

如果我没有在配置文件中定义这两个属性(如上图所示),并且没有使用“for channel”启动从属设备,则它可以正常工作。只有当我尝试定义多源时,它才会显示此错误。

错误日志文件包含以下条目:

2017-01-01T12:41:54.446764Z 0 [错误] 检查 TABLE 的 mysql.slave_master_info 存储库信息类型时出错。2017-01-01T12
:41:54.446764Z 0 [错误] 创建主信息时出错:检查存储库时出错。2017-01-01T12:41:54.446764Z 0 [错误] 无法创建或恢复复制信息存储库。2017-01-01T12
:41:54.446764Z 0 [错误] 无法创建或恢复复制信息存储库。

我该如何解决这个问题?

编辑
有一件事我知道这与 5 个表有关索引统计统计信息主从信息中继日志信息奴隶工人信息。即使我删除这些表然后再次创建,它仍然会显示相同的错误。顺便说一下,我在一台机器上使用多个实例。

答案1

您的命令中缺少信息change master。对于多源复制,就像普通复制一样,您需要包含初始日志坐标(当主服务器使用二进制日志记录时)或需要指定自动定位(当主服务器使用 GTID 时)。 这里是有关您需要指定的附加参数的 mysql 文档。

对于自动定位:

change master to 
  master_host="127.0.0.1", 
  master_port=20000, 
  master_user="replication",
  master_password="password1",
  master_auto_position=1 
for channel="master1";

对于基于日志的复制:

change master to 
  master_host="127.0.0.1", 
  master_port=20000, 
  master_user="replication",
  master_password="password1",
  master_log_file='some_log_file.bin',
  master_log_pos=1
for channel="master1";    

相关内容