やかんブログ

[symfony][plugin]sfLoadBalancerPluginの使い方

2008年03月07日(金)12:00|谷口

 谷口です。  以前、気になるプラグインで紹介したsfPropelLoadbalancerPluginの使い方がある程度わかったのでご紹介します。

 まだα版ですので動作の保証がありませんが、DBでレプリケーションをしている方には便利なプラグインです。

概要

  •  対応環境
    • single master
    • multiple slave
  • slave選択アルゴリズム
    • ランダム選択(マスターも対象に含めることができます。)

インストール&使用方法

まだα版のためか、他のプラグインとは別のインストールが必要なようです(?)

端的に示すと以下の通りです。

  1. ソースコードをダウンロード
  2. ダウンロードしたtgzファイルを展開し、pluginsディレクトリ以下に配置
  3. 展開したファイル内のconfig/autoload.ymlのパスを書き換え、application_root /config/autoload.ymlに追記(もしくは、autoload.ymlを作成)
  4. 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からランダムに選択して実行します。

おわりに

まだα版ということですので使用機会は少ないと思われますが、正式リリース版が出たら是非試してみたいプラグインですね。

この記事に関するお問い合わせはこちら

ページの先頭へ