我有一个主-主设置,我想将其移动到一对新的服务器(从linux到opensolaris)。linux 盒名称为 shard1-1 和 shard1-2,osol 盒名称为 shard1-1-osol 和 shard1-2-osol。
这是我所做的:1.关闭两个 Linux 机器上的 mysql 服务器,将数据复制到 osol 机器上。2.编辑每个 osol 机器上的 master.info,在两台机器上将 master 从 shard1-1 更改为 shard1-1-osol,反之亦然。
当我在第一台 osol 机器上启动 mysql 时,我在错误日志中看到了这一点:看起来 mysql 不喜欢主机名更改,并且它对此很抱怨。mysqld-relay-bin.000707 文件存在于 datadir 中,所以不清楚 mysql 在抱怨什么。
090902 2:26:03 InnoDB: Started; log sequence number 246 3528553673
090902 2:26:03 [Warning] Neither --relay-log nor --relay-log-index were used; so replication may break when this MySQL server acts as a slave and has his hostname changed!! Please use '--relay-log=shard1-1-osol-relay-bin' to avoid this problem.
090902 2:26:03 [ERROR] Failed to open the relay log './mysqld-relay-bin.000707' (relay_log_pos 19653396)
090902 2:26:03 [ERROR] Could not find target log during relay log initialization
090902 2:26:03 [ERROR] Failed to initialize the master info structure
答案1
服务器无法找到中继日志,因为它们的命名部分基于主机名。使用这种技术启动从服务器时,您将遇到各种问题。我建议从新的主服务器重新初始化从服务器。只需删除从服务器的所有数据库,使用 mysqldump 从主服务器转储,将其导入到从服务器,然后使用 CHANGE MASTER TO 来设置从新主服务器的复制。这比尝试解决您将遇到的所有问题要容易得多。
答案2
我必须在一定程度上不同意。您可以重命名日志文件并更新relay-log.info、相关的.index文件和/或在my.cnf中设置“log-bin”以使其正常工作。
答案3
对于与你的问题有类似影响的问题,有一个有用的指南是使用复制时请注意主机名的变化!,由 Sun/MySQL 的 Trent 编写。
答案4
如果只是抱怨中继日志,在大多数情况下,如果主服务器仍有二进制日志,则它们是可抛弃的。您只需在从服务器上运行 CHANGE MASTER TO,它就会刷新现有的中继日志并重新开始。您无需制作新的副本。