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 に答える