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--versionpg_checksumsのバージョンを出力して終了します。
-?--helppg_checksumsのコマンドライン引数のヘルプを表示して終了します。
PGDATA
データベースクラスタが格納されたディレクトリを指定します。
これに対して-Dオプションで上書き指定できます。
PG_COLOR
対話的メッセージで色を使用するかを指定します。
指定可能な値はalways、auto、neverです。
大きいクラスタでチェックサムを有効にするには、場合によっては長時間を要する可能性があります。 この操作中にデータディレクトリに書き込みをするクラスタや他のプログラムを開始してはいけません。さもないとでデータ損失が起きるかもしれません。
リレーションファイルブロックの直接コピーを行うツール(例えばpg_rewind)でレプリケーションのセットアップを使う時のチェックサムの有効化や無効化は、操作が全ノードを通して一貫して行われない場合、不正なチェックサムという形でページ破損を引き起こすおそれがあります。 したがって、レプリケーションのセットアップでチェックサムの有効化や無効化をするときには、一貫して切り替える前にすべてのクラスタを停止することを推奨します。 全てのスタンバイを廃棄して、プライマリ上で操作を行い、最後にスタンバイを新たに再作成するのも安全です。
チェックサムの有効化や無効化をしている最中にpg_checksumsが中断されたり、killされたりした場合、クラスタのデータチェックサム設定は変更されないままとなり、pg_checksumsを同じ操作を再実行できます。