如何解决octopus rails gem中特定于模型的数据库分片
我的 shards.yml 文件如下所示:
octopus:
replicated: true
fully_replicated: false
environments:
- production
production:
abc:
adapter: MysqL2
encoding: utf8
reconnect: true
database: abc_production
pool: 50
username: <%= ENV['DB_USER'] %>
password: <%= ENV['DB_PASSWD'] %>
host: db-abc-master.tt.internal
abc_replica:
adapter: MysqL2
encoding: utf8
reconnect: true
database: abc_production
pool: 50
username: <%= ENV['DB_USER'] %>
password: <%= ENV['DB_PASSWD'] %>
host: db-abc-replica.tt.internal
replica:
adapter: MysqL2
encoding: utf8
reconnect: true
database: abc_demand
pool: 50
username: <%= ENV['DB_USER'] %>
password: <%= ENV['DB_PASSWD'] %>
host: db-abc-demand-replica.tt.internal
master:
adapter: MysqL2
encoding: utf8
reconnect: true
database: abc_demand
pool: 50
username: <%= ENV['DB_USER'] %>
password: <%= ENV['DB_PASSWD'] %>
host: db-abc-demand-master.tt.internal
我已经配置了 2 个数据库的 4 个分片(每个数据库的主和副本)。
这样做的原因是我在 abc
上有一些表,在 abc-demand
上有一些表。所以,我需要与两者联系起来。
什么时候,我在做:
Model1.last
,它向我显示查询是在 abc_replica
上进行的。
在 Model2.last
,查询是在 abc
上进行的。
它是如何动态选择正确的分片的?
模型文件中没有提到根据查询选择分片。
我们可以使用 Model.using("shard") 并且在某些情况下也可以使用,但某些查询无需“使用”关键字即可工作。
任何帮助将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。