MySQL を使用した非常に単純なマスター/スレーブ レプリケーションのセットアップがあります。ActiveRecord は、database.yml で予想されるように、マスター ホスト名をヒットするように構成されています。私の質問は、ActiveRecord がすべての読み取りをスレーブから行い、書き込みをマスターに任せるオプションを設定することは現在可能ですか? Ruby on Rails/ActiveRecord 3.1.3 を使用しています。以下を実行するためのオプションは見つかりませんでした。database.yml の単一のホスト エントリ フィールドだけです。これは現在可能ですか?
質問する
6229 次
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 に答える