移动一个mysql的奴隶到一个新的主机:无法打开中继日志

我有一个主 – 主设置,我想移动到一对新的服务器(从Linux到opensolaris)。 linux的box名称分别是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 

服务器无法find中继日志,因为它们部分根据主机名命名。 你会有各种各样的问题试图使奴隶使用这种技术。 我build议重新初始化新主人的奴隶。 只要将所有的数据库放在从服务器上,使用mysqldump从主服务器进行转储,将其导入到从服务器上,然后使用CHANGE MASTER TO来设置新主服务器的复制。 解决所有你将要遇到的问题是很方便的。

我不得不在一定程度上不同意。 您可以重命名日志文件并更新relay.log.info,相关的.index文件和/或在my.cnf中设置“log-bin”以使其工作。

一个有用的指南,对你有类似的影响的问题是注意使用复制时的主机名更改! ,来自Sun / MySQL的Trent。

如果只是抱怨中继日志,在大多数情况下,如果主服务器仍然有二进制日志,它们是一次性的。 您可以在从站上运行CHANGE MASTER TO,它将刷新现有的中继日志并重新启动。 你不需要做一个新的副本。