2009年05月26日

[Wakame] PostgreSQLもスケール対象へ (3/n)

livedoorClipに登録 | このエントリーをはてなブックマークに追加 | del.icio.usに登録 | MM/Memoに登録

[Wakame] PostgreSQLもスケール対象へ (2/n)の続編

前回の予定を変更し、今回はpgpool-IIの追加設定。
オンラインリカバリ検証は次回予定。

今回の前提条件として、pgpool-IIがインストールされている事。
作業内容は前回のエントリを参照。

作業の流れ

作業対象サーバは2台で、pgpool-IIとノード(PostgreSQL)。
重要なのはアーカイブログの有効化とpgpool-recoveryの組み込み。

  • pgpool-II
    • pcpアカウント作成
    • pgpool-recoveryビルド
  • ノード(PostgreSQL)
    • pgpool-recoveryを配置
    • initdbコマンドでdataディレクトリ作成
    • アーカイブログ用ディレクトリ作成
    • configを変更しアーカイブログを有効化
    • pgpool-recoveryをPostgreSQLに組み込む

作業内容: pgpool-II

PCP コマンドの設定より

pgpool-II では PCP コマンドと呼ばれるインタフェースを通して pgpool-II の停止やデータベースノードに関する情報の表示を行います。
PCP コマンドを使用するにはユーザ認証が必要になるので、ユーザ名とパスワードを pcp.conf ファイルに設定します。
pcp.conf ファイルの書式は以下のように 1 行ごとにユーザ名と MD5 ハッシュに変換されたパスワードを : で区切ったものです。

pcp用アカウントを設定して行く

▼pcpアカウント用パスフレーズ生成

$ /usr/local/pgpool2/bin/pg_md5 postgres
e8a48653851e28c69d0506508fb27fc5

md5sumコマンドと何が違うのか…

$ echo -n postgres | md5sum
e8a48653851e28c69d0506508fb27fc5  -

当たり前だけど、ハッシュ値は同じだ。
echoだと「-n」をつけ忘れる可能性があるので、pg_md5を使うのがベター。

▼pcp用アカウント追加

$ cd /usr/local/pgpool2/etc/; pwd
/usr/local/pgpool2/etc
$ sudo cp -pi pcp.conf.sample pcp.conf
$ sudo vi pcp.conf
$ diff pcp.conf.sample pcp.conf
28a29
> postgres:e8a48653851e28c69d0506508fb27fc5

▼pgpool-recoveryをビルドするための準備

$ sudo apt-get install postgresql-server-dev-8.3

▼pgpool-recoveryをビルド

$ cd sql/pgpool-recovery/
$ make

▼pgpool-recoveryのインストール先ディレクトリ作成

$ sudo mkdir /usr/local/pgsql
$ sudo mkdir /usr/local/pgsql/lib
$ sudo mkdir /usr/local/pgsql/share

▼pgpool-recoveryのインストール先ディレクトリを変更したので、パス変更

$ perl -pi -e 's,\$libdir,/usr/local/pgsql/lib,' pgpool-recovery.sql

▼pgpool-recoveryをインストール

$ sudo cp -pi pgpool-recovery.so  /usr/local/pgsql/lib/.
$ sudo cp -pi pgpool-recovery.sql /usr/local/pgsql/share/.

作業内容: ノード(PostgreSQL)

▼PostgreSQL用ディレクトリ準備

$ sudo mkdir /usr/local/pgsql
$ sudo chown postgres:postgres /usr/local/pgsql

psqlコマンドなどはDebianパッケージでインストールされている物とする

▼pgpool-IIからノードへpgpool-recoveryを配置

$ cd /usr/local/pgsql
$ sudo mkdir lib
$ sudo mkdir share

$ scp (pgpool-II):/usr/local/pgsql/lib/pgpool-recovery.so    ./lib/pgpool-recovery.so
$ scp (pgpool-II):/usr/local/pgsql/share/pgpool-recovery.sql ./share/pgpool-recovery.sql

▼initdbコマンドでdataディレクトリ作成

$ sudo -u postgres /usr/lib/postgresql/8.3/bin/initdb -D /usr/local/pgsql/data

▼archive_logの準備

$ sudo -u postgres mkdir     /usr/local/pgsql/data/archive_log/
$ sudo -u postgres chmod 700 /usr/local/pgsql/data/archive_log/

▼postgresql.conf変更 アーカイブログを有効化

$ sudo vi /usr/local/pgsql/data/postgresql.conf
listen_addresses = '*'
archive_mode = on
archive_command = 'cp %p /usr/local/pgsql/data/archive_log/%f'

▼pg_hba.conf変更

$ sudo vi /usr/local/pgsql/data/pg_hba.conf
local   all         all                               trust
host    all         all         127.0.0.1/32          trust
host    all         all         192.168.1.0/24          trust
host    all         all         ::1/128               trust

pgpool-IIからの接続を許可する

▼PostgreSQLを起動

$ sudo -u postgres /usr/lib/postgresql/8.3/bin/pg_ctl -D /usr/local/pgsql/data start

▼pgpool-recoveryをpostgresに組み込む

$ sudo -u postgres psql -c "\i /usr/local/pgsql/share/pgpool-recovery.sql" template1
CREATE FUNCTION
CREATE FUNCTION

オンラインリカバリを検証する為の受け皿は整った。

今後の予定

  • オンラインリカバリ検証

関連エントリ



PostgreSQL徹底入門 第2版
浅羽 義之 石田 朗雄 稲葉 香理 永安 悟史
翔泳社
売り上げランキング: 34255


半袖 at 16:15│Comments(0)TrackBack(1)Wakame 

トラックバックURL

この記事へのトラックバック

1. [Wakame] PostgreSQLもスケール対象へ (4/n)  [ 半袖野郎 blog.hansode.org ]   2009年05月26日 18:01
[Wakame] PostgreSQLもスケール対象へ (3/n)の続編 予告通り、今回はオンラインリカバリを実行してみる。 node1(PostgreSQL) オンラインリカバリ用にnode1の鍵作成 オンラインリカバリ用にnode2に鍵登録 リカバリスクリプト配置 pgpool-II...

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔