PostgreSQL repmgr の手動インストールとマスター→スレーブ複製ガイド

目的と関連キーワード
主目的: repmgr を使ったマスター/スレーブ(スタンバイ)レプリケーションのセットアップと確認。 関連キーワード: repmgr インストール, PostgreSQL レプリケーション, スタンバイ クローン, repmgr.conf, repmgrd 監視
前提条件(短く)
- PostgreSQL がマスターとスレーブ両方にインストール済みであること
- root または適切な sudo 権限を持つこと
- ネットワーク経由でホスト名(例: pgmaster, pgslave)が解決できること
ステップ 5. 両方のサーバーで repmgr ソースを手動インストールする
まず repmgr のソースをダウンロードします。以下は例です(ファイル名と保存先は必ず確認してください)。
ダウンロード先例:
http://projects.2ndquadrant.it/sites/default/files/repmgr-1.1.0.tar.gz を /tmp に入れる
コンパイル前に必要なパッケージをインストールします。例(openSUSE/zypper の例を示します):
zypper install make gcc postgresql-devel libxslt-devel pam-devel libopenssl-devel krb5-devel
パッケージが揃ったら repmgr をコンパイルしてインストールします。
make USE_PGXS=1
make USE_PGXS=1 install
インストールが正しく行われたか確認します:
repmgr --version
repmgrd --version
マスター、スレーブ双方で上記が動作することを確認してください。次のステップではマスターのデータベースをスレーブへクローンします。
ステップ 6. マスターのデータベースをスレーブ(スタンバイ)にクローンする(スレーブ側のみ)
スレーブ側で以下を実行します:
su - postgres
repmgr -D /var/lib/pgsql/data -d pgbench -p 5432 -R postgres --verbose standby clone pgmaster
クローン処理のログが画面に出力されます。処理中のスクリーン例:
クローンが完了したら、スレーブで PostgreSQL を起動します:
/etc/init.d/postgresql start
重要: クローン元(マスター)のデータベース名、ユーザー、接続情報が正しいことを必ず確認してください。
ステップ 7. repmgr 設定ファイルをマスターとスレーブ両方に作成する
repmgr の設定ディレクトリを作り、repmgr.conf を作成します。以下は最小構成の例です。
マスター側(例):
cluster=test
node=1
conninfo='host=pgmaster user=postgres dbname=pgbench'
スレーブ側(例):
cluster=test
node=2
conninfo='host=pgslave user=postgres dbname=pgbench'
重要: conninfo の host、user、dbname は実際の環境に合わせて正確に設定してください。パスワード認証を使う場合は PostgreSQL 側の pg_hba.conf を適切に設定すること。
ステップ 8. マスターとスレーブを登録し、監視プロセスを開始する
マスターでマスターとして登録:
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose master register
スレーブでスタンバイとして登録:
repmgr -f /var/lib/pgsql/repmgr/repmgr.conf --verbose standby register
登録後、差分を確認します:
psql pgbench -c 'select * from repmgr_test.repl_status'
出力例として「スレーブはマスターより約1秒遅延している」旨の結果が出ることがあります。
検証テスト(レプリケーション確認)
マスターでテーブル作成と挿入を行います:
psql pgbench -c "create table test ( test varchar(30));"
psql pgbench -c "insert into test values ( 'test123');"
スレーブでレコードが反映されているか確認:
psql -h pgslave pgbench -c "select * from test"
「Bingo, everything works now.」— 反映されていればセットアップ成功です。
今後改善すべき点と注意事項
以下はこのチュートリアルで触れた点や注意点です。運用に移す前に確認してください。
- repmgr 用の専用ユーザーを作成し、postgres ユーザーをそのまま使わないこと。最小権限の原則を適用する。
- repmgr に既知のバグがある場合があるため、関連コミットやパッチを確認する。例: 参考となる修正コミットリンク(元記事にあったリンクを参照)。
- マスター障害時の昇格(promotion)手順は repmgr ドキュメントを読み、手順とロールバック方法を必ず確認する。
- レプリケーション監視は repmgrd に任せつつ、外部監視(Prometheus/監視ツール)と組み合わせると堅牢性が上がる。
- 常に repmgr パッケージに付属する README を確認する。
重要: テスト環境での検証を十分に行い、本番ではバックアップとロールバックプランを必ず準備してください。
実務で使えるチェックリスト(役割別)
管理者向けチェックリスト:
- repmgr と postgresql のバージョン互換性を確認
- 必要な開発ヘッダ/ライブラリをインストール
- repmgr.conf を各ノードで整備
- pg_hba.conf と認証方式を確認
- repmgrd を自動起動する systemd スクリプトを用意
運用担当向けチェックリスト:
- 監視アラート(レプリケーション遅延)を設定
- 障害時の昇格手順をドキュメント化
- 定期的にリカバリ手順をテスト
- ファイルシステムとディスクの健全性を監視
テストケースと受け入れ基準
テスト1: クローン成功
- 操作: スレーブで standby clone を実行
- 期待: PostgreSQL が起動し、データが反映される
テスト2: レプリケーション反映
- 操作: マスターでテーブル作成・INSERT
- 期待: スレーブで同一データを SELECT できる
テスト3: repmgr 登録
- 操作: master register / standby register
- 期待: repmgr の内部テーブルに両ノードが登録される
受け入れ基準: 上記の全てのテストが成功し、repmgrd が動作していること。
ミニ手順書(ものごとの流れ)
- 依存パッケージをインストール
- repmgr をソースからビルド/インストール
- スレーブで standby clone を実行し PostgreSQL を起動
- 両ノードで repmgr.conf を用意
- ノード登録を行い repmgrd を起動
- レプリケーションの動作確認
1行用語集
- repmgr: PostgreSQL のレプリケーション管理ツール
- standby clone: マスターのデータをスレーブに丸ごと複製する操作
- repmgrd: repmgr の監視・自動復旧デーモン
まとめ
本ガイドは repmgr をソースからビルドしてマスターとスレーブにインストールし、マスターからスレーブへクローンしてレプリケーションを確認する手順を示しました。運用環境ではユーザー管理、監視、昇格手順の文書化を行い、定期的に復旧テストを実施してください。
参考リンク: