ActsAsReadonlyable の使い方
Mysqlのレプリケーションを使って複数のDBサーバを構築しました。RailsでこのDBサーバにアクセスするために、ActsAsReadonlyableというプラグインをはじめて使ってみます。
まずはプラグインのインストール。
script/plugin install svn://rubyforge.org/var/svn/acts-as-with-ro/trunk/vendor/plugins/acts_as_readonlyable
それからconfig/database.ymlの設定をします。
production:
database: rails_app_production
host:db_master
....(省略)....
read_only_server_1:
database: rails_app_production
host: db_slave1
....(省略)....
read_only_server_2:
database: rails_app_production
host: db_slave2
....(省略)....
今回はDBが3台なので3台分の設定です。
あとは、利用したいモデルで、
acts_as_readonlyable [:read_only_server_1, :read_only_server_2]
と指定してあげるだけ。
すべてのモデルで利用するのならば、config/environment.rbで、
class << ActiveRecord::Base
def inherited_with_read_only(child)
child.acts_as_readonlyable [:read_only_server_1, :read_only_server_2]
inherited_without_read_only(child)
end
alias_method_chain :inherited, :read_only
end
としてあげれば大丈夫です。超簡単だね。
LVSとかでスレーブサーバーを管理するなら、そのVIPに対してスレーブをひとつだけ設定すればいいだけです。