it技術:データベース:postgresql:運用
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
it技術:データベース:postgresql:運用 [2019/07/28 22:15] – [WALのアーカイブの流れ] yajuadmin | it技術:データベース:postgresql:運用 [2019/08/04 11:16] – [WALアーカイブからのリストア] yajuadmin | ||
---|---|---|---|
行 297: | 行 297: | ||
archive_timeoutはトランザクションがほとんど発生しない「なぎ」のとき、WALにたまった内容がいつまで経ってもアーカイブされないことを防ぐ。デフォルトでは0(機能無効) | archive_timeoutはトランザクションがほとんど発生しない「なぎ」のとき、WALにたまった内容がいつまで経ってもアーカイブされないことを防ぐ。デフォルトでは0(機能無効) | ||
+ | archive_timeout = 60 とした場合、16MB*60回/ | ||
[[http:// | [[http:// | ||
==== WALアーカイブの削除 ==== | ==== WALアーカイブの削除 ==== | ||
行 302: | 行 303: | ||
pg_basebackup を実行すると、WALアーカイブのフォルダに拡張子backupが作成される。\\ | pg_basebackup を実行すると、WALアーカイブのフォルダに拡張子backupが作成される。\\ | ||
- | これにより指定した拡張子backupより前の不要なWALアーカイブの削除される。 | + | これにより指定した拡張子backupより前の不要なWALアーカイブが削除される。 |
< | < | ||
行 322: | 行 323: | ||
よって、不要なWALアーカイブの削除は手動で行うこととする。\\ | よって、不要なWALアーカイブの削除は手動で行うこととする。\\ | ||
※postgreSQLサービスを再起動すればリカバリが実行され、recovery.confはrecovery.doneになります。 | ※postgreSQLサービスを再起動すればリカバリが実行され、recovery.confはrecovery.doneになります。 | ||
- | ==== WALアーカイブからのリストア ==== | + | ==== WALアーカイブからのリカバリ ==== |
- | [[http:// | + | リストアとリカバリとは区別しないで使うときもあるが、今回は分けました。 |
+ | |||
+ | * リストアはバックアップデータを、バックアップを取ったときと同じ状態に物理的に復元すること | ||
+ | * リカバリはリストアしたデータに何かの処理をして最新の状態や正常な状態に復旧させること | ||
+ | |||
+ | === PITRの仕組み | ||
+ | PITR(Point In Time Recovery)は、WALレコード適用によるリカバリが前提となっている。 | ||
+ | | ||
+ | * [[http:// | ||
+ | |||
+ | **WALレコードの適用までの流れ**\\ | ||
+ | リカバリを開始してWALレコードを適用するまでの流れは次のようになっている。 | ||
+ | |||
+ | - pg_controlファイルを読み込む | ||
+ | - recovery.confを読み込む | ||
+ | - backup_labelを読み込む | ||
+ | - pg_controlファイルを更新し、backup_labelを削除する | ||
+ | - 必要なWALを繰り返し適用する | ||
+ | |||
+ | ※backup_labelファイルから適用を開始すべきWALの位置を取得できなかった場合は、pg_controlファイルの情報を元にリカバリを開始します。 | ||
+ | |||
+ | pg_controlファイルは、バイナリファイルなので通常のエディタでは内容を確認できません。そのために pg_controldata コマンドが用意されています。\\ | ||
+ | pg_controldata コマンドで最終チェックポイントのREDO WALファイルが分かる。 | ||
+ | |||
+ | < | ||
+ | pg_controldata -D C: | ||
+ | |||
+ | pg_controlバージョン番号: | ||
+ | カタログバージョン番号: | ||
+ | データベースシステム識別子: | ||
+ | データベースクラスタの状態: | ||
+ | pg_control最終更新: | ||
+ | 最終チェックポイント位置: | ||
+ | 前回のチェックポイント位置: | ||
+ | 最終チェックポイントのREDO位置: | ||
+ | 最終チェックポイントのREDO WALファイル: | ||
+ | 最終チェックポイントの時系列ID: | ||
+ | 最終チェックポイントのPrevTimeLineID: | ||
+ | 最終チェックポイントのfull_page_writes オン | ||
+ | 最終チェックポイントのNextXID: | ||
+ | 最終チェックポイントのNextOID: | ||
+ | 最終チェックポイントのNextMultiXactId: | ||
+ | 最終チェックポイントのNextMultiOffset: | ||
+ | 最終チェックポイントのoldestXID: | ||
+ | 最終チェックポイントのoldestXIDのDB: | ||
+ | 最終チェックポイントのoldestActiveXID: | ||
+ | 最終チェックポイントのoldestMultiXid: | ||
+ | 最終チェックポイントのoldestMulti' | ||
+ | 最終チェックポイントのoldestCommitTsXid: | ||
+ | 最終チェックポイントのnewestCommitTsXid: | ||
+ | 最終チェックポイント時刻: | ||
+ | ログを取らないリレーション向けの偽のLSNカウンタ: | ||
+ | 最小リカバリ終了位置: | ||
+ | 最小リカバリ終了位置のタイムライン: | ||
+ | バックアップ開始位置: | ||
+ | バックアップ終了位置: | ||
+ | 必要なバックアップ最終レコード: | ||
+ | wal_level の設定: | ||
+ | wal_log_hints の設定: | ||
+ | max_connections の設定: | ||
+ | max_worker_processes の設定: | ||
+ | max_prepared_xacts の設定: | ||
+ | max_locks_per_xact の設定: | ||
+ | track_commit_timestamp の設定: | ||
+ | 最大データアラインメント | ||
+ | データベースのブロックサイズ: | ||
+ | ラージリレーションのセグメント当たりのブロック数: | ||
+ | WALブロックのサイズ: | ||
+ | WALセグメント当たりのバイト数: | ||
+ | 識別子の最大長: | ||
+ | インデックス内の最大列数: | ||
+ | TOASTチャンクの最大サイズ: | ||
+ | ラージオブジェクトチャンクのサイズ: | ||
+ | 日付/ | ||
+ | Float4 引数の渡し方: | ||
+ | Float8 | ||
+ | データベージチェックサムのバージョン: | ||
+ | </ | ||
===== VACUUM処理 ===== | ===== VACUUM処理 ===== | ||
PostgreSQLは、追記型アーキテクチャ(MVCC: | PostgreSQLは、追記型アーキテクチャ(MVCC: |
it技術/データベース/postgresql/運用.txt · 最終更新: 2024/04/24 11:07 by yajuadmin