私は、Railsアプリケーションの3つのデータベースでフェイルオーバーと負荷分散を実現する方法を検討しています。Railsで分散データベースを設定する方法
現在のコードは問題なく動作しますが、db_1
がダウンするとアプリケーションが終了します。
db_1
をプライマリとし、他の2つのdb_2
とdb_3
をフェールオーバーとして使用したいと思います。
また、これらの負荷を分散したいと考えていますが、あまり重要ではありません。
のconfig/database.ymlを
db_1:
adapter: mysql2
reconnect: false
pool: 5
username: <username>
password: <password>
database: database_test
host: 101.101.101.1
db_2:
adapter: mysql2
reconnect: false
pool: 5
username: <username>
password: <password>
database: database_test
host: 101.101.101.2
db_3:
adapter: mysql2
reconnect: false
pool: 5
username: <username>
password: <password>
database: database_test
host: 101.101.101.3
APP /モデル/ ext_databases.rb
class ExtDatabases < ActiveRecord::Base
self.abstract_class = true
establish_connection :db_1
end
APP /モデル/ users.rb
class Users < ExtDatabases
Users.table_name = "ext_users"
end