#author("2018-12-17T14:58:36+00:00","default:haikikyou","haikikyou")
[[PostgreSQL/解析]]

* pg_rewind [#g8c14678]

タイムライン分岐したデータベースサーバを同期させるツール。例えば、レプリケーションでプライマリ、スタンバイとあって、プライマリが何らかの障害等で停止し、スタンバイがプライマリに昇格した時、スタンバイは新しいタイムラインでシステムを継続する。この後、プライマリを新しいスタンバイとして組み込みたい場合、pg_rewindコマンドを使用すると、新しいタイムラインのスタンバイ(新プライマリ)に同期させることができる。リカバリの方法としてpg_basebackupコマンドがあるが、こちらはデータベースディレクトリを丸々複製するのに対し、pg_rewindは差分データのみ同期させることで、データ転送量を抑えることができ、復旧時間の短縮化することができる。(更新内容にもよるが、データベースクラスタサイズが大きいシステムではpg_rewindがリカバリ時間の短縮をすることができるだろう)。


#geshi(bash){{{
pg_rewind --debug -D primary/pgdata -P --source-server="host=localhost dbname=postgres port=5433"
}}}
* pg_rewindの条件 [#l6c574c4]

pg_rewindを実行するには、正常停止している必要がある。~
よって障害等でプロセスた突然ダウンしてしまった場合、一度インスタンスを起動し正常停止させる。

* pg_rewindの動作 [#d0d09003]

- コピー元のソース一覧を取得し、コピー元にないファイルがコピー先にある場合、コピー先のファイルを削除する。
- pg_rewindは、fork前の最後のチェックポイント以降のWALレコードを辿り、更新されたブロック情報を取得する。
- コピー元から、更新ブロックされたブロック、ファイルなどを取得する。
- forkの箇所まで巻き戻した後は、インスタンス起動し、rewindで取得したWAL(コピー元になり場合はアーカイブからリストアすることもある)を再生する。

#ref(./pg_rewind_image_block_actions.png,100%)
* 参考リンク [#j995d3c4]

- [[pg_rewind>https://www.postgresql.jp/document/10/html/app-pgrewind.html]] - &size(11){&color(gray){on https://www.postgresql.jp/document/10/html/app-pgrewind.html};};

トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP