ホーム DoRuby PostgreSQL8.3でウォームスタンバイの設定

PostgreSQL8.3でウォームスタンバイの設定

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

どうもメガネです。5回目です。

今回はPostgreSQLでのウォームスタンバイの設定を行います。

PostgreSQL8.3からウォームスタンバイの設定が簡単になったので紹介します。

今回は1台のマシンで2つのデータベースインスタンスを作成して環境を作って行きます。

PostgreSQLpgstandby cd /usr/local/src/postgresql-8.3.0/contrib/pg_standby

make make install

 

次に/tmpディレクトリにdb1(マスターDB)とdb2(バックアップDB)というインスタンスを作成します。db2はdb1のコピーを使うのでここでは作成しません。

 

cd/tmp initdb –n-locale db1

 

次にアーカイブログを格納するためのディレクトリを作成します。

 

mkdirarchive1 mkdir archive2

 

そしてdb1/postgresql.confに以下の3行を追加します。

 

vi/tmp/db1/postgresql.confarchivemode=onarchivecommand=cparchivetimeout=10archivecommandcpscpmount使DB pg_ctl start -D /tmp/db1

 

主系の完全バックアップを作成

 

psqlcselectpgstartbackup(backup)template1 cp -pR db1 db2

psqlcselectpgstopbackup()template1DBpostgresql.conf vi /tmp/db2/postgresql.conf

 

archive_mode = on

archive_command = ‘cp %p /tmp/archive2/%f’

archive_timeout = 10

port = 5433

 

db2の中からpostmaster.pidとpg_xlogの中を消す。

rmdb2/postmaster.pid rm db2/pg_xlog/*

rm: db2/pg_xlog/archive_status: is a directory

rmdb2/pgxlog/archivestatus/DBrecovery.confrestorecommand=pgstandbylt/tmp/trigger/tmp/archive1DB pg_ctl start -D /tmp/db2

psqlp5433psql:FATAL:thedatabasesystemisstatingupdb1 createdb testdb

You can't use 'macro parameter character #' in math mode pg_ctl -D db1 stop
cd/tmp touch trigger # 今回は手動でファイルを作成しましたがdb1を常に監視しているシェルスクリプトを作成してdb1の反応がなくなった瞬間にtriggerを作成すれば自動で切り替えることができます。

DB2が起動するはずです。これでリカバリは完了しているはずです。最後にきちんと同期がとれていることを確認します。

DB2で実行

$ psql -p 5433 testdb
testdb=# select * from test;
DB1で表示された結果と同じであれば成功です。

以上です。

記事を共有

最近人気な記事