![MySQL 中多源复制不起作用](https://linux22.com/image/696114/MySQL%20%E4%B8%AD%E5%A4%9A%E6%BA%90%E5%A4%8D%E5%88%B6%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我正在尝试设置多源复制。在我的从属服务器中,我已在其配置文件中定义了以下两个属性。
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";