- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- PostgreSQL/解析/pg_rewind へ行く。
pg_rewind †
タイムライン分岐したデータベースサーバを同期させるツール。例えば、レプリケーションでプライマリ、スタンバイとあって、プライマリが何らかの障害等で停止し、スタンバイがプライマリに昇格した時、スタンバイは新しいタイムラインでシステムを継続する。この後、プライマリを新しいスタンバイとして組み込みたい場合、pg_rewindコマンドを使用すると、新しいタイムラインのスタンバイ(新プライマリ)に同期させることができる。リカバリの方法としてpg_basebackupコマンドがあるが、こちらはデータベースディレクトリを丸々複製するのに対し、pg_rewindは差分データのみ同期させることで、データ転送量を抑えることができ、復旧時間の短縮化することができる。(更新内容にもよるが、データベースクラスタサイズが大きいシステムではpg_rewindがリカバリ時間の短縮をすることができるだろう)。
pg_rewind --debug -D primary/pgdata -P --source-server="host=localhost dbname=postgres port=5433" # source-serverとは、複製元となるサーバのことである。 # つまり新しく組み込もうとしているサーバを同期させるサーバである。
pg_rewindの条件 †
pg_rewindを実行するには、正常停止している必要がある。
よって障害等でプロセスた突然ダウンしてしまった場合、一度インスタンスを起動し正常停止させる。
pg_rewindの動作 †
- コピー元のソース一覧を取得し、コピー元にないファイルがコピー先にある場合、コピー先のファイルを削除する。
- pg_rewindは、fork前の最後のチェックポイント以降のWALレコードを辿り、更新されたブロック情報を取得する。
- コピー元から、更新ブロックされたブロック、ファイルなどを取得する。
- forkの箇所まで巻き戻した後は、インスタンス起動し、rewindで取得したWAL(コピー元になり場合はアーカイブからリストアすることもある)を再生する。