テクノロジーガイド

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

2 min read PostgreSQL 更新されました 26 Sep 2025
PostgreSQL repmgr 手動インストールと複製ガイド
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

/tmp にダウンロードした repmgr ソースの一覧と依存パッケージインストール画面サンプル

パッケージが揃ったら repmgr をコンパイルしてインストールします。

make USE_PGXS=1
make USE_PGXS=1 install

/usr/local/bin にインストールされた repmgr バイナリ確認の画面サンプル

インストールが正しく行われたか確認します:

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.」— 反映されていればセットアップ成功です。


今後改善すべき点と注意事項

以下はこのチュートリアルで触れた点や注意点です。運用に移す前に確認してください。

  1. repmgr 用の専用ユーザーを作成し、postgres ユーザーをそのまま使わないこと。最小権限の原則を適用する。
  2. repmgr に既知のバグがある場合があるため、関連コミットやパッチを確認する。例: 参考となる修正コミットリンク(元記事にあったリンクを参照)。
  3. マスター障害時の昇格(promotion)手順は repmgr ドキュメントを読み、手順とロールバック方法を必ず確認する。
  4. レプリケーション監視は repmgrd に任せつつ、外部監視(Prometheus/監視ツール)と組み合わせると堅牢性が上がる。
  5. 常に 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 が動作していること。


ミニ手順書(ものごとの流れ)

  1. 依存パッケージをインストール
  2. repmgr をソースからビルド/インストール
  3. スレーブで standby clone を実行し PostgreSQL を起動
  4. 両ノードで repmgr.conf を用意
  5. ノード登録を行い repmgrd を起動
  6. レプリケーションの動作確認

1行用語集

  • repmgr: PostgreSQL のレプリケーション管理ツール
  • standby clone: マスターのデータをスレーブに丸ごと複製する操作
  • repmgrd: repmgr の監視・自動復旧デーモン

まとめ

本ガイドは repmgr をソースからビルドしてマスターとスレーブにインストールし、マスターからスレーブへクローンしてレプリケーションを確認する手順を示しました。運用環境ではユーザー管理、監視、昇格手順の文書化を行い、定期的に復旧テストを実施してください。

参考リンク:

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Microsoft Teamsで不在を設定する方法
ハウツー

Microsoft Teamsで不在を設定する方法

WhatsAppで削除メッセージを読む方法
テクニカルガイド

WhatsAppで削除メッセージを読む方法

iCloudで永久に削除した写真を復元する方法
データ復元

iCloudで永久に削除した写真を復元する方法

KickstartでCentOS/Fedoraを自動インストールする方法
Linux

KickstartでCentOS/Fedoraを自動インストールする方法

Snapchatのスコアを非表示にする方法
ソーシャルメディア

Snapchatのスコアを非表示にする方法

Microsoft Teamsで画面共有する方法(デスクトップ・モバイル)
導入ガイド

Microsoft Teamsで画面共有する方法(デスクトップ・モバイル)