タイガーラック クリエイティブブログ
2024
May
30

【PostgreSQL】レプリケーション設定方法

企業の事業継続のためにITシステムのBCP対策を行うことはマストとなりつつあります。
対策の一つとして2つ以上のデータベースを遠隔地に配置し、
リアルタイムでデータを同期するレプリケーションという技術があります。
今回はPostgreSQLでレプリケーション機能について設定方法を紹介します。

前提

レプリケーション設定する上で下記を前提として設定します。
・マスター、スタンバイの2台同期構成
・ホットスタンバイ
・ストリーミングレプリケーション

マスター側

コマンド

<postgresユーザーを作成>
$psql -p <ポート番号> -U postgres
$CREATE ROLE repl_user LOGIN REPLICATION PASSWORD <パスワード>;

pg_hba.conf

<接続情報を追加>
host    replication     repl_user             <マスター側IP>/32        scram-sha-256
host    replication     repl_user             <スタンバイ側IP>/32        scram-sha-256

postgresql.conf

<設定情報を追加>
synchronous_commit = on
wal_level = replica
max_wal_senders = 10
wal_keep_size = 80
wal_sender_timeout = 60s
synchronous_standby_names = 'node01'

スタンバイ側

コマンド

<マスター側と同期する>
# systemctl stop postgresql-13
# su - postgres
$ rm -rf /var/lib/pgsql/13/data/*
$ pg_basebackup -h <マスター側ID> -p <ポート番号> -D ${PGDATA} -R --progress -U repl_user

postgres.auto.conf

<マスター側の接続情報を追加>
primary_conninfo = 'user=repl_user  password=<マスター側パスワード>  host=<マスター側IP> port=<マスター側ポート> application_name=node01'

postgresql.conf

<不要な設定をコメントアウト>
#synchronous_standby_names = 's1'
<設定を追記>
hot_standby = on
wal_receiver_timeout = 60s

レプリケーションができているかの確認

<マスタサーバでクエリを実行>
select application_name, state, sync_priority, sync_state from pg_stat_replication;
<syncと表示されれば成功>

まとめ

PostgreSQLでのレプリケーション設定方法について紹介しました。
簡単な設定でレプリケーションが実現できることがお判りいただけたと思います。
注意点として、現時点ではマスターサーバーが停止した場合にスタンバイ側を昇格させるフェイルオーバーを手動で行う必要があります。自動でフェイルオーバーを行うためには別のミドルウェアを使用する必要があります。
実運用では自動フェイルオーバーまでセットで設定することをお勧めします。

このカテゴリの最新記事

関連記事

SHOP LIST

タイガーラック株式会社

〒577-0056
大阪府東大阪市長堂1-3-14 TOKUYASU Bld.