在两个不同的位置同步两个MySQL数据库


19

我有两个相同的MySQL数据库,一个在内部服务器中,另一个在网络托管服务器中。我想每天使用内部服务器上的数据库更新Web主机上的数据库。有没有办法自动执行此过程,又该如何手动执行呢?如果要手动执行此操作,是否需要我在内部服务器上获取数据库的SQL转储,然后将其导入Web主机上的数据库中?有人可以请教。


你可以参考现有的答案贴在这里StackOverflow的stackoverflow.com/questions/52583/...
马赫什·帕蒂尔

关于#2,如果我从内部进行完全转储并在生产中导入它将覆盖在线数据库,我的意思是我在数据库网络上托管了在线买家,并且我想将内部数据库购买迁移到实时状态,请您说明一下BTW将会做什么如果两者之间都保留了相同的ID,则会在两者之间发生自动碰撞,这将是很麻烦的!
shareef

Answers:


20

您有几种选择:

  1. 在服务器之间设置MySQL复制。您的内部服务器可以充当主服务器,而Web主机服务器可以充当从服务器。在主服务器上执行的所有更新都将立即复制到从服务器(假定连接正常)。这很可能是最简单,最有效的选择。要使用复制,需要从Web主机通过网络访问内部数据库。

    您可以在此处阅读有关复制的更多信息。

  2. 每天,您都可以在内部服务器上执行mysqldump,将转储文件上传到Web主机,然后导入数据。由于这是一个完整的转储,因此如果您有一个非常大的数据库,这可能不可行。如果您愿意,可以将此程序编写为脚本,以避免手动进行。

  3. 您可以在内部服务器上设置二进制日志记录。然后,您可以将二进制日志发送到Web主机,并将它们应用于数据库,从而有效地将当天发生的所有事务处理到Web服务器。实际上,无论如何,这就是复制会发生的情况,因此您几乎总是选择复制设置而不是使用此选项。

如果两个数据库之间没有连接,则每天采取mysqldumps将是最简单的途径。


关于#2,如果我从内部进行完全转储并在生产中导入它将覆盖在线数据库,我的意思是我在数据库网络上托管了在线买家,并且我想将内部数据库购买迁移到实时状态,请您说明一下BTW将会做什么如果两者之间都保留了相同的ID,则会在两者之间发生自动碰撞,这将是很麻烦的!
shareef


2

1
欢迎使用DBA.SE。感谢您的贡献/参与。但是,社区确实希望所发布的答案具有一定的质量。请考虑阅读以下文章:如何写一个好的答案?(帮助中心)在部分回答问题有一个短句其内容为:鼓励链接到外部资源,但请周围添加链接的上下文,以便其他用户将有一些想法是什么,为什么它的存在
约翰又名hot2use18年

0

您可以使用Navicat。它主要是数据库管理器,但具有数据传输和数据同步功能以及调度程序,因此您可以实现自动化。它不是免费的,但有30个全功能试用版。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.