通过主 – 主复制将MySQL从一台服务器迁移到另一台服务器

操作系统是Linux。 我想这个过程就像下面这样:

  • 在旧服务器和新服务器之间build立主 – 主复制
  • 将我的应用程序服务器上的db ip从源数据库切换到目标数据库。
  • 确认新的数据库正在被使用。 (显示进程列表等)
  • 在原始服务器上断开复制。

我的问题其实就是最后一步。 除了发布“服务mysql停止”之外,执行此步骤的最优雅的方式是什么?

也希望人们看看这个确认这些步骤是否理智。 谢谢!!

如果你打算把复制作为最后一步,那么build立主人是否真的有什么意义? 用Current-> New服务器设置Master-> Slave可能就足够了。 一旦你在你的应用程序中切换IP地址(我假设所有的写入操作都会立即开始使用新的服务器),所有的写入操作应该到新的服务器上,然后你可以发出一个stop slave; 毕竟,MySQL Master <=> Master确实只是主/从 – >从/主(如果有意义的话)。

设置Master-Master的唯一好处是,一旦你完成了IP切换,所有新的写入到新的数据库将被复制回原来的。

你要确定的一件事是你的复制能够跟上。 这两个数据库服务器是在同一个networking上,还是通过WAN链接进行复制? 这些繁忙的服务器? 在任何特定的时刻,是否有很多人被复制? 你可能遇到的一个问题是,当你切换时你的副本奴隶没有跟上主。 如果新服务器开始接收写入信息,但它仍在追赶中继日志中的内容,则可能会导致关键冲突(但这也取决于应用程序如何写入数据库)。 如果你能承受30秒的停机时间,我会build议打开“停机维护”页面,validation复制是100%,然后切换数据库IP地址。 然后把应用程序备份。 在白天/黑夜的时间,这是最less的用户。

事先用一些开发机器或虚拟机testing一下可能不会有什么坏处。