自主管理 PostgreSQL インスタンスを ApsaraDB RDS for PostgreSQL へ移行する前に、postgresql.conf ファイルで以下の 2 つのパラメーターを設定する必要があります。listen_addresses を設定することで、移行中の RDS インスタンスからの接続を許可します。また、WAL 保持パラメーター(wal_keep_segments または wal_keep_size)を設定することで、レプリケーション完了前に先行書き込みログ(WAL)レコードが削除されるのを防ぎます。
このトピックの例では、CentOS 7 上の PostgreSQL 13 を使用しています。ファイルパスおよびコマンド内のバージョン番号は、ご利用の環境に合わせて適宜調整してください。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
Elastic Compute Service (ECS) インスタンスまたはデータセンターにデプロイされた自主管理 PostgreSQL インスタンス
ホスト上で
postgresユーザーおよびrootユーザーへのアクセス権限
ステップ 1:現在のパラメーター値の確認
自主管理 PostgreSQL インスタンスに接続し、以下のコマンドを実行して現在の値を確認します。
| パラメーター | 適用対象 | コマンド | 必要な値 |
|---|---|---|---|
listen_addresses | すべてのバージョン | SHOW listen_addresses; | * |
wal_keep_segments | PostgreSQL 10、11、12 | SHOW wal_keep_segments; | 4096 以上 |
wal_keep_size | PostgreSQL 13 以降 | SHOW wal_keep_size; | 65536 MB 以上 |
各パラメーターの役割:
listen_addresses:インスタンスが接続を受け付ける IP アドレスを指定します。*に設定すると、移行中の RDS インスタンスからの接続が可能になります。wal_keep_segments/wal_keep_size:pg_walディレクトリ内に保持される WAL データ量を制御します。値が小さすぎると、完全バックアップ後に WAL レコードが削除され、レプリケーションが中断されて、バックアップを最初からやり直す必要が生じます。
listen_addresses および WAL 保持パラメーターは、静的パラメーターであり、サービスを完全に再起動した後にのみ有効になります。いずれかの値が要件を満たさない場合は、ステップ 2 ~ 5 を実行してサービスを停止し、ファイルを更新してから再起動してください。
すべての値がすでに要件を満たしている場合は、「自主管理 PostgreSQL インスタンスへのクラウド移行用アカウントの作成」に進んでください。
ステップ 2:PostgreSQL データベースサービスの停止
postgresユーザーのみがpg_ctlコマンドを実行できます。su - postgresを実行して、postgresユーザーに切り替えてください。
/usr/pgsql-13/bin/pg_ctl stop -m fastステップ 3:postgresql.conf ファイルの検索
rootユーザーのみがfindコマンドを実行できます。su - rootを実行して、rootユーザーに切り替えてください。
find / -name postgresql.conf出力結果にはファイルパスが表示されます(例):
/var/lib/pgsql/13/data/postgresql.confステップ 4:postgresql.conf ファイルの編集
該当ディレクトリに移動してファイルを開きます。
cd /var/lib/pgsql/13/data/
vim postgresql.confパラメーターを必要な値に設定します。これらのパラメーターはデフォルトでコメントアウトされている場合があります。編集後、各行先頭の # を削除してください。
listen_addresses = '*'
# PostgreSQL 10、11、または 12 の場合:
wal_keep_segments = 4096
# PostgreSQL 13 以降の場合:
wal_keep_size = 65536Esc キーを押した後、:wq を入力して保存・終了します。
ステップ 5:PostgreSQL データベースサービスの起動
postgresユーザーのみがpg_ctlコマンドを実行できます。su - postgresを実行して、postgresユーザーに切り替えてください。
/usr/pgsql-13/bin/pg_ctl start