我们有相当大的 (1-4GB) MySQL 数据库,经常用于关键应用程序。我们想将其中一些从物理服务器 1 (S1) 移动到物理服务器 2 (S2)。
传统的方法是在 S1 中停止 MySQL,制作 SQL Dump,将其导入 S2,然后开始使用 S2 作为生产服务器。这可行,但它会给我们的客户带来严重的停机时间,尤其是因为我们需要通过 Internet 传输数 GB 的转储数据。
是否有可能在很少或没有停机时间的情况下完成此移动?
我一直在想的一个策略是这样的:
- 在 S1 中为特定的 DB 启动 binlog
- 在 S1 仍在生产中时进行 SQL 转储。转储将具有与二进制日志相对应的某种时间戳
- 将SQL转储传输到S2并将其导入到新的MySQL服务器
- 让 S2 上的 MySQL 服务器复制转储开始时间和现在之间的差异(从二进制日志)。
- 将 S2 上的 MySQL 服务器设置为 S1 的从服务器,并不断复制 S1 上的任何更改
- 更改 DNS,以便将对 S1 的任何新请求定向到 S2。
这行得通吗?如果可以,我该怎么做?应该注意什么?
最佳答案
我没有做你刚才问的事情的经验,但我现在正在学习这个主题,因为我试图找出,我将来如何能够做到这一点,当时机成熟时,以及是否有我现在可以做的事情,以便以后可以实现。
在寻找解决方案时,我找到了 following post ,或多或少描述了你刚才问的内容。除了更改 DNS 的最后一部分并开始在从数据库上工作。我自己还没有尝试过,但在帖子中他也描述了如何准确地做到这一点的过程。
在我看来,这是可以做到的,我希望你能成功。您也可以问问在最后一步写帖子的人。
This也值得检查,我认为它关闭了整个循环
祝你好运
关于mysql - 如何在不停机的情况下将 MySQL 数据库移动到另一台服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20330001/