gpt4 book ai didi

ruby-on-rails - 在开发环境中通过 Octopus gem 复制 Rails Postgresql

转载 作者:行者123 更新时间:2023-11-29 13:00:05 26 4
gpt4 key购买 nike

显然,当使用 Octopus gem 进行 Postgres 复制时,一切都应该是即插即用的。但是我似乎找不到我做错了什么。

这是我的config/shards.yml

octopus:
environments:
- development
replicated: true
development:
slave1:
adapter: postgresql
host: localhost
database: slaveapp_development
username: pguser
password: pgpass

AR 模型 Provider(我通过 Rake 任务在每个应用程序中创建完全相同的表)我想同步/复制到我的从属:

class Provider < ActiveRecord::Base
has_many :products
replicated_model()
end

我通过 Rails 服务器启动这两个应用程序并进入 Masterapp 的控制台,然后从那里:

> Provider.using(:slave1).create({provider_params...})  
#=> works! I get a new record in slave1's DB.
> Provider.using(:master).create({provider_params...})
#=> works partly. Creates record only in master's DB.

问题是当调用 Provider.using(:master)... 我期待:

1 - 在主人的数据库中创建记录。

2 - 在 slave1 的数据库中复制相同的记录。 <--- 这没有发生。

最佳答案

这不是 Octopus gem 的目的。

它根据是读操作还是写操作重定向数据库请求。这样您就可以使用 Rails 模型而无需考虑当前的数据库连接以及它是否适合预期的操作。

不会将数据复制到从站。

要执行实际的复制,即从主服务器到从服务器的数据传输,您必须自己进行设置。

PostgreSQL 有多种选择。如果您使用的是更新版本 (9.1+),则可以使用集成的 streaming replication in "hot standby" mode .有关于如何设置它的教程,例如

如果您受困于旧版本的 PostgreSQL,请查看 alternatives .

关于ruby-on-rails - 在开发环境中通过 Octopus gem 复制 Rails Postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32868719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com