mysqlでのdbのマスタースレーブに対応するのは厳しいねぇ。
先にいうと、あることはあるけど
メンテされてなくて最新のrailsでは動きませんでし。
そのうち使えるようになるだろうと信じてのメモ書きです。
急いで使うなら自分で作るか、改良する必要になります。
magic multi connections
findする際にモデルの頭に接続名を指定する形。
Master::User.find(:first) Slave1::User.find(:first) Slave2::User.find(:first)
複数のDBコネクションを自由に選択できる柔軟性があるが、単純なマスタースレーブ構成にするにはスレーブをまとめるための一工夫が必要になる。
メジャーなのがこれっぽいが、rails2.1で動かなかった。。
ので使えない。
http://magicmodels.rubyforge.org/magic_multi_connections/
mysql replication adapter
findの引数にスレーブ使うよとオプションを渡すスタイル
マスタースレーブ構成に一番適したスタイルだと思う。
User.find(:first, :use_slave => true)
rails2系では使えないっぽいがバグトラッカーに
rails2系で使えるようにしたパッチがありました。
http://rubyforge.org/tracker/index.php?func=detail&aid=20068&group_id=4116&atid=15778
一応動作したのですが、本番環境で1日おきに例外が。。
ActiveRecord::ConnectionAdapters::CannotWriteToSlave (You attempted to perform a write operation inside a slave-balanced read block.): [FATAL] /vendor/plugins/mysql_replication_adapter/lib/active_record/connection_adapters/mysql_replication_adapter.rb:91:in `ensure_master'
恐らくdbが切断されたときの再接続で失敗する時があるくさい。
開発環境でdb接続を強制切断して何回か試してたまに再現できました。
というわけで使えない。