Ruby on rails 正在创建我的应用程序的沙盒版本。数据库复制?或者以另一种方式

Ruby on rails 正在创建我的应用程序的沙盒版本。数据库复制?或者以另一种方式,ruby-on-rails,postgresql,database-replication,Ruby On Rails,Postgresql,Database Replication,我计划创建一个rails生产应用程序的沙箱系统,供潜在客户使用 生产系统正在不断更新新的内容,我想把这些内容带到沙箱中,使其尽可能真实。但是,我不想通过执行完整的数据库转储/恢复来破坏沙箱,因为我希望保留此系统上的用户帐户(只需使用新内容更新) 我已经检查了几个选项,但我可以使用一些建议 1-数据库转储/恢复 虽然它的工作原理很简单,但配置cron作业并在服务器之间传输整个数据库有点困难,尽管我可能不需要它。我想我可以只转储某些表,但这仍然可能会传输比所需更多的数据 2-DB复制 基于每个表设置

我计划创建一个rails生产应用程序的沙箱系统,供潜在客户使用

生产系统正在不断更新新的内容,我想把这些内容带到沙箱中,使其尽可能真实。但是,我不想通过执行完整的数据库转储/恢复来破坏沙箱,因为我希望保留此系统上的用户帐户(只需使用新内容更新)

我已经检查了几个选项,但我可以使用一些建议

1-数据库转储/恢复

虽然它的工作原理很简单,但配置cron作业并在服务器之间传输整个数据库有点困难,尽管我可能不需要它。我想我可以只转储某些表,但这仍然可能会传输比所需更多的数据

2-DB复制

基于每个表设置主从复制。从我看来,这可能是我想要做的。只复制新的内容表,忽略帐户表

3-另一种方式

我不确定。。。有没有更好的办法

但是等等,还有更多

沙盒系统并不总是在运行(它只在特定的时间内可用),所以我需要一些在无法连接时不会太烦躁的东西。只是静静地失败,稍后再试

我对复制非常陌生,所以有人建议从哪里开始吗?斯隆尼,比卡多,鲁比雷普

详细信息

  • Rails 3应用程序
  • PostgreSQL数据库
  • Ubuntu服务器

您应该只执行转储/恢复。主/从设置将不起作用,因为从设备将处于只读状态。有两种方法可以做到这一点:

1) ,然后通过以下方式恢复:

2) 加载到一个临时数据库中,然后执行以下操作


无论哪种情况,它们都很容易编写脚本。请查看用于psql的'-1'或'-single transaction'命令。

能否在不同的架构中隔离用户帐户表?@Catcall-hmm。。。也许吧,但我不想做太大的模式更改,因为沙盒只是生产应用程序的复制品。如果我对两个DBs都做了更改。。。
pg_dump -c ... | psql some_host dba_user staging_db
pg_dump ... | psql -c some_host dba_user staging_db_tmp
# In psql while connected to template1 (and no one is connected to prod):
ALTER DATABASE staging_db RENAME TO staging_db_tmp;
ALTER DATABASE staging_db_tmp RENAME TO staging_db;