如何在服务器之间同步数据库

时间:2014-04-22 02:58:32

标签: ruby-on-rails postgresql

如果我有3台服务器,并运行Rails app

每个服务器都有自己的数据库。

我希望他们的数据库能够以一致的方式同步。

我使用PostgreSQL。

我的操作系统环境是Ubuntu服务器12.04

有没有宝石可以同步数据库?

我只想模仿台湾,日本,美国的服务器。

当用户在台湾的数据库中添加数据时,

然后数据将尽快同步到其他服务器以确保一致。

我认为这是一个大问题,但我不知道,我需要一些更好的教程来阅读。

2 个答案:

答案 0 :(得分:3)

对此有很多不同的解决方案,选择最好的解决方案将取决于您的需求。在尝试选择之前,您需要分析您的应用程序以确定其要求。

Postgresql中的built in replication functionality允许单个主服务器,多个从服务器配置。在此配置中,一个数据库是主数据库,所有更新必须在主服务器上进行,但从服务器上允许只读查询。

PgPool II之类的工具可用于从应用程序中隐藏此细节,在执行将更新主服务器上的数据库的语句时自动将只读查询分发给从服务器。 PgPool还可以在节点发生故障时自动将从站升级为主站。

还有许多项目提供附加复制功能。 Postgresql Wiki上提供了这些摘要。

答案 1 :(得分:0)

虽然我不知道克隆数据库的任何宝石,但我有迁移经验&克隆db的

  

@Harmic发布了一个很好的答案!但是你还需要其他东西   考虑:PostgreSQL,MYSQL,SQLite3等都是SQL驱动的db。这个   意味着您可以使用SQL在它们之间传输数据。这可以是您想要的手动或自动过程,但实际上您的数据库只是存储一组数据,您可以使用SQL在任何系统之间迁移它

我们使用PGSQL迁移的方式是pg_dump& pg_restore命令

这是favourite of Heroku - 您可以使用pg_dump来保存SQL文件(其中包含要构建和填充新PGSQL数据库的所有SQL查询):

pg_dump mydb > db.sql

然后,您就可以使用pg_restore将该数据移植到另一个PGSQL数据库中:

pg_restore -C -d postgres db.sql