Using pgAgent

Using pgAgent#

pgAgentは、ジョブを実行および管理するスケジューリングエージェントです。各ジョブは、1つ以上のステップとスケジュールで構成されます。 2つ以上のジョブが同時に実行されるようにスケジュールされている場合、pgAgentはジョブを並列してそれぞれ独自のスレッドで実行します。

ステップは、一連のSQLステートメントまたはオペレーティングシステムのバッチ/シェルスクリプトです。特定のジョブの各ステップは、前のステップが完了したときに名前の英数字オーダー実行されます。 pgAgent Job ダイアログ プロパティ コンテキストメニューからアクセスのスイッチをオンにすると、ジョブを変更し、必要に応じて個々のステップを有効または無効にすることができます。

各ジョブは、1つ以上のスケジュールに従って実行されます。ジョブまたはそのスケジュールが変更されるたびに、ジョブの次のランタイムが再計算されます。 pgAgentの各インスタンスは、過去の次回ランタイム値を持つジョブのデータベースを定期的にポーリングします。 1分ごとに少なくとも1回ポーリングすることにより、通常、すべてのジョブが指定された開始時間の1分以内に開始されます。ジョブの次回の実行時にpgAgentインスタンスが実行されていない場合、pgAgentが次に起動されるとすぐに実行され、通常のスケジュールに戻ります。

pgAdminツリーコントロールで定義されたジョブの名前を強調表示すると、メインpgAdminウィンドウの プロパティ タブにジョブに関する詳細が表示され、 統計 タブにジョブの実行に関する詳細が表示されます。

セキュリティ上の懸念#

pgAgentは非常に強力なツールですが、注意する必要があるセキュリティの考慮事項がいくつかあります。

Database password - pgAgent接続文字列にパスワードを含めないでください。Unixシステムでは、 * ps * 出力ですべてのユーザーに表示され、 Windowsシステムではプレーンテキストでレジストリに保存されます。代わりに、libpq ~/.pgpass ファイルを使用して、pgAgentがアクセスする必要があるすべてのデータベースのパスワードを保存します。この手法の詳細については、 Database password を参照してください。

System/database access - pgAgentによって実行されるすべてのジョブは、pgAgentユーザーのセキュリティ権限で実行されます。 SQLステップは、pgAgentがデータベースに接続するユーザーとして実行され、バッチ/シェルスクリプトは、pgAgentサービスまたはデーモンが実行されているオペレーティングシステムユーザーとして実行されます。このため、ジョブを作成および変更できるユーザーの制御を維持することが重要です。デフォルトでは、 pgAgentデータベースオブジェクトを作成したユーザーのみがこれを行うことができます。これは通常、PostgreSQLのスーパーユーザーです。