pg_checksums — PostgreSQLデータベースクラスタのデータチェックサムを有効化、無効化、あるいは検査する。
pg_checksums
[option
...] [[ -D
| --pgdata
]datadir
]
pg_checksumsはPostgreSQLクラスタのデータチェックサムの検査と有効化、無効化を行います。 pg_checksumsを実行する前にサーバは正常停止されていなければなりません。 チェックサムを検査する場合、終了ステータスはチェックサム誤りが無ければゼロで、チェックサム誤りが一つでも在ったなら非ゼロです。 チェックサムの有効化、無効化をする場合、終了ステータスは操作に失敗したときに非ゼロになります。
チェックサムを検査する場合、クラスタ内の各ファイルがスキャンされます。
チェックサムの有効化では、チェックサムが変更されたすべてのリレーションファイルブロックがその場で書き換えられます。
チェックサムの無効化では、ファイルpg_control
だけ更新されます。
以下のコマンドラインオプションが使用できます。
-D directory
--pgdata=directory
データベースクラスタが格納されているディレクトリを指定します。
-c
--check
チェックサムを検査します。 これは何も指定しなかった場合のデフォルトのモードです。
-d
--disable
チェックサムを無効化します。
-e
--enable
チェックサムを有効化します。
-f filenode
--filenode=filenode
指定したファイルノードfilenode
のリレーション内のチェックサムだけを検査します。
-N
--no-sync
pg_checksums
はデフォルトでは全てのファイルが安全にディスクに書かれるまで待ちます。
このオプションは、pg_checksums
がこれを待たずに応答するようにします。より早いですが、直後のオペレーティングシステムのクラッシュで更新されたデータディレクトリの破損が残る可能性があることを意味します。
一般に、このオプションはテストには有用ですが、本番導入むけには使うべきではありません。
--check
を使う場合には、このオプションは効果がありません。
-P
--progress
進行報告を有効にします。 これを有効にするとチェックサムの検査あるいは有効化で、進行報告が出力されます。
-v
--verbose
冗長な出力を有効にします。 チェックした全ファイルの一覧を出力します。
-V
--version
pg_checksumsのバージョンを出力して終了します。
-?
--help
pg_checksumsのコマンドライン引数のヘルプを表示して終了します。
PGDATA
データベースクラスタが格納されたディレクトリを指定します。
これに対して-D
オプションで上書き指定できます。
PG_COLOR
対話的メッセージで色を使用するかを指定します。
指定可能な値はalways
、auto
、never
です。
大きいクラスタでチェックサムを有効にするには、場合によっては長時間を要する可能性があります。 この操作中にデータディレクトリに書き込みをするクラスタや他のプログラムを開始してはいけません。さもないとでデータ損失が起きるかもしれません。
リレーションファイルブロックの直接コピーを行うツール(例えばpg_rewind)でレプリケーションのセットアップを使う時のチェックサムの有効化や無効化は、操作が全ノードを通して一貫して行われない場合、不正なチェックサムという形でページ破損を引き起こすおそれがあります。 したがって、レプリケーションのセットアップでチェックサムの有効化や無効化をするときには、一貫して切り替える前にすべてのクラスタを停止することを推奨します。 全てのスタンバイを廃棄して、プライマリ上で操作を行い、最後にスタンバイを新たに再作成するのも安全です。
チェックサムの有効化や無効化をしている最中にpg_checksumsが中断されたり、killされたりした場合、クラスタのデータチェックサム設定は変更されないままとなり、pg_checksumsを同じ操作を再実行できます。