2009年05月26日
[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版
posted with amazlet at 09.05.26
浅羽 義之 石田 朗雄 稲葉 香理 永安 悟史
翔泳社
売り上げランキング: 34255
翔泳社
売り上げランキング: 34255
トラックバックURL
この記事へのトラックバック
1. [Wakame] PostgreSQLもスケール対象へ (4/n) [ 半袖野郎 blog.hansode.org ] 2009年05月26日 18:01
[Wakame] PostgreSQLもスケール対象へ (3/n)の続編
予告通り、今回はオンラインリカバリを実行してみる。
node1(PostgreSQL)
オンラインリカバリ用にnode1の鍵作成
オンラインリカバリ用にnode2に鍵登録
リカバリスクリプト配置
pgpool-II...
