我有一个非常直接的 MySQL 主/从复制设置。ActiveRecord 被配置为在 database.yml 中命中主主机名。我的问题是,目前是否可以为 ActiveRecord 设置一个选项以从从属设备进行所有读取并将写入内容留给主设备?我正在使用 Ruby on Rails/ActiveRecord 3.1.3。我没有找到执行以下操作的任何选项,只有 database.yml 中的一个主机条目字段。这目前可能吗?
问问题
6229 次
3 回答
2
有玛卡拉宝石。它将所有SELECT
语句发送到从站并将操作写入主站。
像这样添加到您的Gemfile
:
gem 'makara'
然后像这样配置你的 database.ml:
production:
adapter: 'mysql2_makara'
database: 'MyAppProduction'
# any other standard AR configurations
# add a makara subconfig
makara:
# the following are default values
blacklist_duration: 5
master_ttl: 5
sticky: true
# list your connections with the override values (they're merged into the top-level config)
# be sure to provide the role if master, role is assumed to be a slave if not provided
connections:
- role: master
host: master.sql.host
- role: slave
host: slave1.sql.host
- role: slave
host: slave2.sql.host
于 2015-03-22T22:20:30.143 回答
0
我们也有同样的要求。目前,这在 ActiveRecord 中是不可能的。
我们加了 2 颗宝石,章鱼和马卡拉。我写了一篇比较这两个宝石的博客:https ://ypoonawala.wordpress.com/2015/11/15/octopus-vs-makara-read-write-adapters-for-activerecord-2/
在我看来,Makara 效果很好,弥补了 Octopus 的问题。
于 2015-11-22T07:47:12.943 回答