障害とリカバリのシナリオ
データベースクラスタ(テーブルスペース)領域のロスト
y
データベースクラスタ(またはテーブルスペース)領域を失った場合には、ベースバック アップからデータベースクラスタをレストアし、アーカイブログを用いてリカバリをする必 要があります。y
オンラインWALファイルが残っている場合には「完全リカバリ」が可能です。 オンラインWAL領域のロスト
y
オンラインWALを失うと、PITRによるリカバリは「不完全リカバリ」となります。完全リカ バリはできません。y
PostgreSQLが起動しなくなる可能性が高いため、ベースバックアップ+アーカイブ WALからリカバリを実施(不完全リカバリ)。 アーカイブWAL領域のロスト
y
アーカイブWAL領域の障害は、サービスにはすぐには影響しません。y
但し、アーカイブできなくなると、(再利用できなくなるため)オンラインWAL領域を圧迫 し始めるため、アーカイブを再開できるよう、アーカイブWAL領域を復旧させる必要が あります。y
また、障害が発生した際には、アーカイブWALがないとリカバリできないため、再度、ベースバックアップを取得する必要があります。
リストア、リカバリ手順
PostgreSQLサーバを停止する
障害の発生したデータベースを保存する(可能であれば)
y
データベースクラスタy
トランザクションログ(残っている場合は必ず保護する)y
テーブルスペース ベースバックアップをレストアする
ベースバックアップ取得以降のアーカイブログをレストアする
最新のトランザクションログを配置する
リカバリ設定ファイル(recovery.conf)を作成する
PostgreSQLサーバを起動し、リカバリ処理を実行する
実施したリカバリを一意に識別するための時間軸
y
PITRによるリカバリを行うと、完了した時点でタイムラインIDが繰り上がるy
これによってアーカイブWALファイルが上書きされなくなる PITRのリカバリはベースバックアップのタイムラインに沿って実施される
y
アーカイブWALファイルの途中でタイムラインが変更されていると、デフォルトではアー カイブWALの適用が行われない。y
対策1:recovery.confでタイムラインを指定してリカバリを行う。y
対策2:タイムラインが変わったら即時にベースバックアップを取得し直す。タイムライン
Crash
TimelineID = 1
PITR
リカバリ実施Timeline
更新TimelineID = 2
ドキュメント内
Microsoft PowerPoint - OSS-DB Exam Gold技術解説無料セミナー.ppt [互換モード]
(ページ 101-104)