[symfony][plugin]sfLoadBalancerPluginの使い方
2008年03月07日(金)12:00|谷口
谷口です。 以前、気になるプラグインで紹介したsfPropelLoadbalancerPluginの使い方がある程度わかったのでご紹介します。
まだα版ですので動作の保証がありませんが、DBでレプリケーションをしている方には便利なプラグインです。
概要
- 対応環境
- single master
- multiple slave
- slave選択アルゴリズム
- ランダム選択(マスターも対象に含めることができます。)
インストール&使用方法
まだα版のためか、他のプラグインとは別のインストールが必要なようです(?)
端的に示すと以下の通りです。
- ソースコードをダウンロード
- ダウンロードしたtgzファイルを展開し、pluginsディレクトリ以下に配置
- 展開したファイル内のconfig/autoload.ymlのパスを書き換え、application_root /config/autoload.ymlに追記(もしくは、autoload.ymlを作成)
- application_root/config/databases.ymlに同プラグインを使用する場合の設定を記述
autoload.yml
autoload:
propel_addon:
name: propel addon
files:
Propel: plugins/sfPropelLoadbalancerPlugin/addon/sfPropelLoadbalancerAutoload.php
databases.ymlの設定項目の説明
まだ、わからない部分もありますが、ざっと下記のような感じです。
all:
db:
class: sfPropelDatabase
param:
dsn: mysql://account:password@host/db_name
encoding: utf8
master:
class: upsoldPropelLoadbalancerDatabase
param: phptype: mysql
hostspec: *******
database: *******
username: *******
password: *******
encoding: utf8
compat_assoc_lower: true
compat_rtrim_string: true
is_master: true #マスターにする設定
master_mode: w #マスターの動作[w: 書き換え rw: 参照+書き換え]
slave:
class: upsoldPropelLoadbalancerDatabase
param:
phptype: mysql
hostspec: *******
database: *******
username: *******
password: *******
encoding: utf8
compat_assoc_lower: true
compat_rtrim_string: true
enable_loadbalancer: true #参照系のクエリ時にslaveとして機能させるか否か
上記のように設定すると参照系クエリの場合はslaveで、書き込み系クエリの場合はmasterで実行されます。master_modeをrwにすると参照系のクエリをmaster,slaveからランダムに選択して実行します。
おわりに
まだα版ということですので使用機会は少ないと思われますが、正式リリース版が出たら是非試してみたいプラグインですね。