如何在不停机的情况下将MySQL数据库移动到另一台服务器

时间:2013-12-02 13:55:51

标签: mysql linux mysqldump database-migration

我们有相当大的(1-4GB)MySQL数据库,它们经常用于关键应用程序。我们想将其中一些从物理服务器1(S1)移动到物理服务器2(S2)。

传统的方法是在S1中停止MySQL,进行SQL转储,将其导入S2,然后开始使用S2作为生产服务器。这有效,但它会给我们的客户带来很大的停机时间,尤其是因为我们需要通过Internet传输几千兆字节的转储数据。

是否有可能在很少或没有停机的情况下进行此移动?

我一直在思考的一个策略就是:

  1. 在S1中为某个DB启动binlog
  2. 在S1生产中仍处于活动状态时进行SQL转储。转储将具有与binlogs相对应的某种时间戳
  3. 将SQL转储传输到S2并将其导入新的MySQL服务器
  4. 让S2上的MySQL服务器在转储开始和现在之间复制差异(来自binlogs)。
  5. 将S2上的MySQL服务器设置为S1的从属服务器并不断复制S1上的任何更改
  6. 进行DNS更改,以便将对S1的任何新请求定向到S2。
  7. 这会有用吗?如果可以的话,我怎么能这样做?应该考虑什么?

1 个答案:

答案 0 :(得分:0)

我没有做你刚刚问过的经验,但我现在正在学习这门课程,因为我试图找出,将来如何能够做到这一点,当时时间会到来,如果有什么我现在可以做的,以便以后可以做到。

在寻找解决方案的过程中,我找到了following post,或多或少地描述了你刚刚提出的问题。除了最后一部分更改DNS并开始处理从DB。我自己还没有尝试过,但是在帖子中他还描述了如何做到这一点的程序。

在我看来它可以做到,我希望你会成功。你也许可以问最后一步写这篇文章的人。

This也值得检查,我认为它关闭了整个循环

祝你好运