3

我有一个非常直接的 MySQL 主/从复制设置。ActiveRecord 被配置为在 database.yml 中命中主主机名。我的问题是,目前是否可以为 ActiveRecord 设置一个选项以从从属设备进行所有读取并将写入内容留给主设备?我正在使用 Ruby on Rails/ActiveRecord 3.1.3。我没有找到执行以下操作的任何选项,只有 database.yml 中的一个主机条目字段。这目前可能吗?

4

3 回答 3

4

是的,这是可能的,但是您需要为此使用 gem;它不是内置在 Rails 本身中的。

我目前使用无缝数据库池,效果很好。章鱼是另一种选择。

于 2012-06-23T03:52:31.103 回答
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 回答