PostgreSQL : ストリーミングレプリケーション
Version 10.0.x 2018/2
マスタ側:111.222.333.444 ⇒ スレーブ側:555.666.777.888
前提条件
マスタ側のPostgreSQLは起動していること。
スレーブ側のPostgreSQLは停止していること。
最小手順
1. マスタ側:レプリケーション用ユーザの作成
2. マスタ側:pg_hba.confの修正
3. マスタ側:postgresql.confの修正
4. マスタ側:PostgreSQLの再起動
5. スレーブ側:ベースバックアップの取得
6. スレーブ側:recovry.confの作成
7. スレーブ側:PostgreSQLの起動
8. レプリケーション状態の確認
1. マスタ側:レプリケーション用ユーザの作成
2. マスタ側:pg_hba.confの修正
3. マスタ側:postgresql.confの修正
∗ max_wal_sendersの値はスレーブ数に1を足した数字。
4. マスタ側:PostgreSQLの再起動
5. スレーブ側 : ベースバックアップの取得
6. スレーブ側 : recovery.confの作成
下記内容のテキストファイルを$PGDATA(ここでは/usr/local/pgsql/data)に作成する。
マスタ側:111.222.333.444 ⇒ スレーブ側:555.666.777.888
前提条件
マスタ側のPostgreSQLは起動していること。
スレーブ側のPostgreSQLは停止していること。
最小手順
1. マスタ側:レプリケーション用ユーザの作成
2. マスタ側:pg_hba.confの修正
3. マスタ側:postgresql.confの修正
4. マスタ側:PostgreSQLの再起動
5. スレーブ側:ベースバックアップの取得
6. スレーブ側:recovry.confの作成
7. スレーブ側:PostgreSQLの起動
8. レプリケーション状態の確認
1. マスタ側:レプリケーション用ユーザの作成
psql -U postgres -d postgres CREATE ROLE repl_foo LOGIN REPLICATION PASSWORD 'password';∗ repl_fooはレプリケーション専用ユーザ。
2. マスタ側:pg_hba.confの修正
# TYPE DATABASE USER ADDRESS METHOD host replication repl_foo 555.666.777.888/32 md5∗ DATABASEとして指定するreplicationは実際のデータベースではなく特殊変数。
3. マスタ側:postgresql.confの修正
wal_level = hot_standby max_wal_senders = 2∗ ストリーミングレプリケーションに必要な最小限の設定パラメータはこの2つ。
∗ max_wal_sendersの値はスレーブ数に1を足した数字。
4. マスタ側:PostgreSQLの再起動
pg_ctl restart∗ max_wal_sendersの変更に再起動を要する。
5. スレーブ側 : ベースバックアップの取得
pg_basebackup -h 111.222.333.444 -p 5432 -D /usr/local/pgsql/data -X stream --progress -U repl_foo -R∗ この時点でのマスタのデータが全てバックアップされる。
6. スレーブ側 : recovery.confの作成
下記内容のテキストファイルを$PGDATA(ここでは/usr/local/pgsql/data)に作成する。
standby_mode = 'on' primary_conninfo = 'user=repl_foo host=111.222.333.444 port=5432'7. スレーブ側 : PostgreSQLの起動
pg_ctl start8. マスタ側:レプリケーション状態の確認
psql -U postgres -d postgres SELECT * FROM pg_stat_replication; pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | sent_lsn | write_lsn | flush_lsn | replay_lsn | write_lag | flush_lag | replay_lag | sync_priority | sync_state -------+----------+----------+------------------+----------------+-----------------+-------------+-------------------------------+--------------+-----------+-----------+-----------+-----------+------------+-----------+-----------+------------+---------------+------------ 15236 | 16384 | repl_foo | walreceiver | 555.666.777.888 | | 52148 | 2018-02-07 00:39:14.738646+09 | | streaming | 0/301BDF8 | 0/301BDF8 | 0/301BDF8 | 0/301BDF8 | | | | 0 | async