無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

pg_resetxlog

名前

pg_resetxlog --  PostgreSQL データベースクラスタの先行書き込みログやその他の制御情報を初期化する

概要

pg_resetxlog [ -f ] [ -n ] [ -o oid ] [ -x xid ] [ -e xid_epoch ] [ -m mxid , mxid ] [ -O mxoff ] [ -l xlogfile ] datadir

説明

pg_resetxlog は、先行書き込みログ(WAL)を消去し、さらにオプションで pg_control ファイル内に保存された制御情報の一部を初期化します。 この機能は、これらのファイルが破損した場合に必要になることがあります。 このような破損などが原因でサーバを起動できない場合の最後の手段としてのみ、この機能を使用してください。

このコマンドを実行すると、サーバが開始できるようになるはずです。 ただし、不完全にコミットされたトランザクションが原因でデータベースのデータに矛盾が起こる可能性があることに注意してください。 コマンドの実行後は、データをただちにダンプし、 initdb を実行し、リロードすべきです。 リロード後、矛盾がないか検査し、必要に応じて修復を行ってください。

このユーティリティの実行にはデータディレクトリへの読み込み/書き込みアクセス権限が必要となるため、サーバをインストールしたユーザのみが実行できます。 安全のため、データディレクトリをコマンドラインで指定する必要があります。 pg_resetxlog は、 PGDATA 環境変数を使用しません。

pg_resetxlog pg_control に対する有効なデータを判別できない場合、 -f (強制)スイッチを指定すれば強制的に処理を進めることができます。 その場合、欠落したデータは無難な値で代用されます。 ほとんどフィールドでは適切な値が使用されますが、次のOID、次のトランザクションIDとエポック時間、マルチトランザクションIDとそのオフセット、WAL開始アドレスの値については、手動の操作が必要な場合があります。 これらの値は下記で説明するオプションを使用して設定することができます。 すべてに対して正しい値を決定できない場合にも -f を使用することができますが、この場合は回復したデータベースを通常よりさらに注意深く検査する必要があります。 必ず、ただちにダンプおよびリロードを行ってください。 決して、ダンプを行う前にデータ変更などの操作を行っては なりません 。 これを行うと、破損状態がさらに悪化します。

-o -x -e -m -O -l の各オプションを使用すると、次のOID、次のトランザクションID、次のトランザクションIDのエポック時間、次および最古のマルチトランザクションID、次のマルチトランザクションのオフセット、WAL開始アドレスの値を手動で設定することができます。 この操作は、 pg_resetxlog pg_control の読み込みによって適切な値を判別できない場合にのみ必要です。 安全な値を得るには、以下のようにします。

-n (操作なし)スイッチを指定すると、 pg_resetxlog pg_control から再構築した値を出力して、何も変更せずに終了します。 これは主にデバッグと目的としたツールですが、 pg_resetxlog を実際に進める前の検査としても有用な場合があります。

-V および --version オプションは pg_resetxlog のバージョンを表示し、終了します。 -? および --help オプションはサポートする引数を表示し、終了します。

注釈

このコマンドは、サーバの稼動中に使用してはいけません。 pg_resetxlog は、データディレクトリにサーバのロックファイルがあると、実行されません。 サーバがクラッシュした場合、ロックファイルがそのまま残される場合があります。 その場合は、ロックファイルを削除すれば pg_resetxlog を実行することができます。 ただし、このコマンドを実行する時は、起動中のサーバプロセスが一切ないことを慎重に確認してください。


powered by SEO.CUG.NET