非同期レプリケーション!

2008年7月24日(木)
SRA OSS, Inc. 日本支社 マーケティング部

注意点

 設定に入る前に2つの点について注意してください。

 1つ目が「レプリケーションのタイムラグ」です。先ほど説明したように、Slony-Iのレプリケーションは非同期であるため、更新がスレーブに反映されるまでにタイムラグがあります。

 pgpool-IIの負荷分散先がSlony-Iのスレーブであった場合、自分でINSERTしたデータであっても直後にSELECTすると存在しない可能性があります。

 もし、このようなタイムラグを許容できないクエリがある場合は、「第3回:レプリケーション&負荷分散!(http://www.thinkit.co.jp/article/98/3/)」で紹介した負荷分散をさせたくない場合と同様、SELECT文の先頭にコメントを付けます(実際の文字列は何でも構いません)。こうすると、負荷分散先に関係無く、SELECT文をマスタに対して実行します。

 2つ目が「DML以外のクエリ」です。pgpool-IIのレプリケーションはクエリ自体をレプリケーションするため、CREATE TABLEやALTER TABLEなどのDML以外のクエリもレプリケーションすることができますが、Slony-Iは、INSERT、UPDATE、DELETEなどのテーブルに対して行われたデータの変更しかレプリケーションしません。

 Slony-Iでのレプリケーションするテーブルの追加の方法については、Slony-Iのマニュアルをご覧ください。

 次からはいよいよ、設定方法について説明していきましょう。

pgpool.confの設定とSlony-Iの設定

 では、pgpoolAdminからpgpool.confの設定を以下のように行いましょう。

・「Replication」セクションの「replication_mode」のチェックを外す
・「Others」セクションの「master_slave_mode」をチェックする
・「Others」セクションの「load_balance_mode」をチェックする

 ここまでの設定が終わったら、画面最下部の「更新」ボタンを押します。

 次はSlony-Iの設定です。本連載ではSlony-Iの機能の詳細までは解説しませんが、設定までの簡単な流れを紹介します。「第3回:レプリケーション&負荷分散!(http://www.thinkit.co.jp/article/98/3/)」と同様、同じマシン上のポート5432と5433で2つのPostgreSQLが起動しているものとします。

 ではSlony-Iをインストールします。Slony-IのWebサイト(http://slony.info)からslony1-1.2.14.tar.bz2をダウンロードし展開します。今回は、Slony-Iに付属のPerlで書かれた管理スクリプト群を使うので、configureのオプションに--with-perltoolsを付加します。

$ ./configure --with-pgconfigdir=/usr/local/pgsql/bin --with-perltools
$ make && make install

 そして、/usr/local/etcにslon_tools.confを作成します(図2)。このファイルの設定内容については、同じディレクトリにあるslon_tools.conf.sampleを確認してください。

著者
SRA OSS, Inc. 日本支社 マーケティング部
SRA OSS, Inc. 日本支社マーケティング部では、PostgreSQL/PowerGresのサポート、コンサルティング、販売を中心にビジネス展開しています。pgpoolのサポートやpgpoolを使った大規模システムのコンサルティングの実績もあります。http://www.sraoss.co.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています