Ruby on rails 在开发环境中通过Octopus gem进行Rails Postgresql复制
显然,当使用八达通gem进行Postgres复制时,一切都应该是即插即用的。然而,我似乎找不到我做错了什么 这是我的Ruby on rails 在开发环境中通过Octopus gem进行Rails Postgresql复制,ruby-on-rails,ruby,postgresql,replication,octopus,Ruby On Rails,Ruby,Postgresql,Replication,Octopus,显然,当使用八达通gem进行Postgres复制时,一切都应该是即插即用的。然而,我似乎找不到我做错了什么 这是我的config/shards.yml 八达通: 环境: -发展 真的吗 发展: 奴隶1: 适配器:postgresql 主机:本地主机 数据库:slaveapp_开发 用户名:pguser 密码:pgpass AR型号提供程序(我通过Rake任务在每个应用程序中创建完全相同的表)我想同步/复制到我的从属程序: 类提供程序提供程序。使用(:slave1)。创建({Provider\u
config/shards.yml
八达通:
环境:
-发展
真的吗
发展:
奴隶1:
适配器:postgresql
主机:本地主机
数据库:slaveapp_开发
用户名:pguser
密码:pgpass
AR型号提供程序
(我通过Rake任务在每个应用程序中创建完全相同的表)我想同步/复制到我的从属程序:
类提供程序>提供程序。使用(:slave1)。创建({Provider\u params…})
#=>有效!我在slave1的数据库中获得了一个新记录。
>Provider.using(:master.create({Provider\u params…})
#=>部分有效。仅在主数据库中创建记录。
问题是,当调用提供程序。使用(:master).
时,我希望:
1-在主数据库中创建记录
2-在slave1的数据库中复制相同的记录 尝试在配置中的
复制:true
之后添加完全复制:false
。这不是八达通gem的目的
它根据是读操作还是写操作重定向数据库请求。这样,您就可以使用Rails模型,而不必考虑当前的数据库连接以及它是否适合预期的操作
它不会将数据复制到从属设备
要执行实际复制,即从主设备到从设备的数据传输,您必须自己进行设置
PostgreSQL有几个选项。如果您使用的是较新版本(9.1+),则可以使用集成的。有关于如何设置它的教程,例如
如果您使用的是较旧版本的PostgreSQL,请查看。@vint-i-vuit您的
提供程序模型是否在回调中创建任何相关模型?如果是,请检查它们是否都包含replicated\u model()
call。感谢您的输入。它不显式地处理回调中的任何模型。它确实有一些“has_many”的关系,但我只是在以防万一的情况下评论了一下:(哦!这解释了很多,而且更有意义):/谢谢你。我在这方面不是很有经验,你有没有更好的解决方案来实现特定表(不是整个数据库)的主多段复制?我在考虑。我也没有这方面的经验,但Slony-I似乎是一个安全的选择,因为它正在积极维护和广泛使用。