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

pg_receivexlog

名前

pg_receivexlog --  PostgreSQL クラスタからトランザクションログをストリームする

概要

pg_receivexlog [ option ...]

説明

pg_receivexlog は実行中の PostgreSQL クラスタからトランザクションログをストリームするために使用されます。 トランザクションログはストリーミングレプリケーションプロトコルを使用してストリームされ、ローカルディレクトリのファイルとして書き出されます。 このディレクトリはポイントインタイムリカバリ( 項24.3 参照)を用いてリストアする際のアーカイブ場所として使用することができます。

pg_receivexlog はトランザクションログをサーバで生成された時と同じ時刻にストリームし、 archive_command のようにセグメントが完了するまで待機することはありません。 このため、 pg_receivexlog を使用する場合には archive_timeout を設定する必要はありません。

トランザクションログは通常の PostgreSQL 接続を経由して、そしてレプリケーションプロトコルを使用して、ストリームされます。 この接続はスーパーユーザまたは REPLICATION 権限( 項20.2 参照)を持つユーザで確立されなければなりません。 そして pg_hba.conf で明示的にレプリケーション用の接続を許可しなければなりません。 またサーバではストリーム用に利用できるセッションが少なくとも1つ存在できるために max_wal_senders を十分大きく設定しなければなりません。

接続が失われた場合、または、致命的ではないエラーで初期確立ができなかった場合、 pg_receivexlog は無期限に接続を再試行しできるだけ早くストリーミングを再確立します。 この動作を止めるためには -n パラメータを使用してください。

オプション

以下のコマンドラインオプションにより格納場所や出力書式を制御します。

-D directory
--directory= directory

出力を書き出すディレクトリです。

このパラメータは必須です。

以下のコマンドラインオプションはプログラムの実行を制御します。

-n
--no-loop

接続エラー時に繰り返しません。 代わりにエラーですぐに終了します。

-v
--verbose

冗長モードを有効にします。

以下のコマンドラインオプションはデータベース接続パラメータを制御します。

-d connstr
--dbname= connstr

サーバに接続するために使用するパラメータを、接続文字列として指定します。 詳細については 項31.1.1 を参照してください。

--dbname という名前のオプションは他のクライアントアプリケーションとの整合性のために付けられました。 しかし、 pg_receivexlog はクラスタ内の何らかの特定のデータベースに接続しませんので、接続文字列内のデータベース名は無視されます。

-h host
--host= host

サーバが稼働しているマシンのホスト名を指定します。 名前がスラッシュから始まる場合、Unixドメインソケット用のディレクトリとして使用されます。 デフォルトは PGHOST 環境変数が設定されていればその値から取られ、設定されていない場合はUnixドメインソケット接続が試行されます。

-p port
--port= port

サーバが接続を待ち受けるTCPポートまたはUnixドメインソケットファイルの拡張子を指定します デフォルトは PGPORT 環境変数が指定されていればその値から取られ、設定されていない場合はコンパイル時のデフォルト値から取られます。

-s interval
--status-interval= interval

サーバに状態パケットを返答する期間を秒単位で指定します。 これによりサーバからより簡単に進行状況を監視することができます。 ゼロという値は状態の定期的な更新を完全に無効にします。 しかし時間切れによる切断を防ぐために、サーバから要求された時には更新を送信します。 デフォルト値は10秒です。

-U username
--username= username

接続するユーザ名です。

-w
--no-password

パスワード入力を促しません。 サーバがパスワード認証を必要とし、かつ、 .pgpass ファイルなど他の手段でパスワードが入手できない場合、接続試行は失敗します。 このオプションは、パスワードを入力するユーザが存在しないバッチジョブやスクリプトで有用になります。

-W
--password

pg_receivexlog はデータベースに接続する前にパスワード入力を強制的に促します。

このオプションは重要ではありません。 pg_receivexlog は、サーバがパスワード認証を要求した場合に自動的にパスワードを促すためです。 しかし pg_receivexlog は、サーバがパスワードを要求するかどうかを確認するために接続試行を浪費します。 -W と入力して無駄な接続試行を防止することが有意である場合があります。

以下のこの他のオプションも使用することができます。

-V
--version

pg_receivexlog のバージョンを表示し、終了します。

-?
--help

pg_receivexlog コマンドライン引数についてのヘルプを表示し、終了します。

環境

他のほとんどの PostgreSQL ユーティリティと同様、このユーティリティは libpq でサポートされる環境変数( 項31.14 参照)を使用します。

注釈

archive_command の代わりに pg_receivexlog を使用する場合、 サーバは、バックアップが適切に保管されていない場合であっても、失敗するコマンドが存在しないため、トランザクションログの再回収を継続します。 これは、ファイルがまだ適切に保管できない場合に失敗する archive_command を持たせることで回避することができます。 以下に例を示します。

archive_command = 'sleep 5 && test -f /mnt/server/archivedir/%f'

始めの待ち時間は、 pg_receivexlog が非同期レプリケーションを使用して動作し、そのためマスタからわずかに遅れる可能性があるため、必要です。

トランザクションログを mydbserver サーバからストリームし、それを /usr/local/pgsql/archive ローカルディレクトリに格納させます。


$
 
pg_receivexlog -h mydbserver -D /usr/local/pgsql/archive

関連項目

pg_basebackup

powered by SEO.CUG.NET