Amazon RDS for PostgreSQL の一般的な DBA タスク - Amazon Relational Database Service

Amazon RDS for PostgreSQL の一般的な DBA タスク

Amazon RDS for PostgreSQL DB インスタンスを管理するときに、データベース管理者 (DBA) は、さまざまなタスクを実行します。すでに PostgreSQL に精通している DBA の場合は、ハードウェア上で PostgreSQL を実行することと RDS for PostgreSQL との重要な違いのいくつかに注意する必要があります。例えば、マネージドサービスであるため、Amazon RDS では DB インスタンスへのシェルアクセスができません。つまり、pg_hba.conf および他の設定ファイルに直接アクセスすることはできません。RDS for PostgreSQL の場合、オンプレミスインスタンスの PostgreSQL 設定ファイルに通常加えられる変更は、RDS for PostgreSQL DB インスタンスに関連付けられたカスタム DB パラメータグループに対して行われます。詳細については、「「パラメータグループを使用する」 」を参照してください。

また、オンプレミスの PostgreSQL インスタンスと同じ方法では、ログファイルにアクセスできません。ログ記録の詳細については、「RDS for PostgreSQL データベースログファイル」を参照してください。

別の例としては、PostgreSQL superuser アカウントにアクセスできなくなります。RDS for PostgreSQL では、rds_superuser ロールが最も高い権限を持つロールであり、設定時に postgres に付与されます。オンプレミスで PostgreSQL を使い慣れている場合でも、RDS for PostgreSQL を初めて使用する場合でも、rds_superuser ロールについて、およびロール、ユーザー、グループ、アクセス権限の操作方法を理解することをお勧めします。詳細については、「PostgreSQL のロールとアクセス権限について」を参照してください。

RDS for PostgreSQL の一般的な DBA タスクの一部を次に示します。

RDS for PostgreSQL でサポートされているログ記録メカニズムの使用

いくつかのパラメータ、エクステンション、その他の設定可能な項目を設定して、PostgreSQL DB インスタンスで発生するアクティビティのログを作成できます。これには以下が含まれます。

  • log_statement パラメータは PostgreSQL データベースのユーザー操作のログを作成するのに使用できます。RDS for PostgreSQL のログ記録とログのモニタリング方法の詳細については、「RDS for PostgreSQL データベースログファイル」を参照してください。

  • rds.force_admin_logging_level パラメータにより、DB インスタンス上のデータベースでの Amazon RDS 内部ユーザー (rdsadmin) によるアクションをログに記録されます。出力が PostgreSQL エラーログに書き込まれます。指定可能な値は、disableddebug5debug4debug3debug2debug1infonoticewarningerror、log、fatal、および panic です。デフォルト値は disabled です。

  • rds.force_autovacuum_logging_level パラメータを設定して、PostgreSQL エラーログにさまざまな自動バキュームオペレーションをキャプチャすることができます。詳細については、「自動バキュームおよびバキュームアクティビティのログ記録」を参照してください。

  • PostgreSQL Audit (pgAudit) 拡張は、セッションレベルまたはオブジェクトレベルでアクティビティをキャプチャするようにインストールおよび設定できます。詳細については、「pgAudit を使用してデータベースのアクティビティを記録する」を参照してください。

  • log_fdw 拡張を使用すると、SQL を使用してデータベースエンジンのログにアクセスすることができます。詳細については、「SQL を使用した DB ログのアクセスのための log_fdw 拡張機能の使用」を参照してください。

  • pg_stat_statements ライブラリは、PostgreSQL バージョン 10 以降の RDS で、shared_preload_libraries パラメータのデフォルトとして指定されています。実行中のクエリを分析するために使用できるのはこのライブラリです。DB パラメータグループで pg_stat_statements が設定されていることを確認してください。このライブラリが提供する情報を使用した RDS for PostgreSQL DB インスタンスのモニタリングの詳細については、「RDS PostgreSQL での SQL 統計」を参照してください。

  • log_hostname パラメータは、各クライアント接続のホスト名をログに取り込みます。PostgreSQL バージョン 12 以降のバージョンの RDS では、このパラメータはデフォルトで off に設定されています。オンにする場合は、必ずセッション接続時間をモニタリングしてください。オンにすると、サービスはドメインネームシステム (DNS) 逆ルックアップリクエストを使用して接続しているクライアントのホスト名を取得し、PostgreSQL ログに追加します。これはセッション接続中に顕著な影響を及ぼします。このパラメータはトラブルシューティングの目的のみでオンにすることをお勧めします。

一般に、ログ記録のポイントは、DBA がモニタリング、パフォーマンスのチューニング、およびトラブルシューティングを実行できるようにすることです。ログの多くは、Amazon CloudWatch または Performance Insights に自動的にアップロードされます。ここでは、DB インスタンスの完全なメトリクスを提供するためにソートおよびグループ化されています。Amazon RDS のモニタリングとメトリクスの詳細については、「Amazon RDS インスタンスでのメトリクスのモニタリング」を参照してください。

pgBadger を使用した PostgreSQL でのログ分析

pgBadger などのログ分析ツールを使用して、PostgreSQL のログを分析できます。pgBadger のドキュメントでは %l パターン (セッションやプロセスに関するログの行) をプレフィックスに含める必要があると説明されています。ただし、最新の RDS log_line_prefix をパラメータとして pgBadger に渡すことでも、レポートが作成されます。

例えば、次のコマンドでは、pgBadger を使用して、2014-02-04 の日付の Amazon RDS for PostgreSQL のログファイルを適切にフォーマットします。

./pgbadger -f stderr -p '%t:%r:%u@%d:[%p]:' postgresql.log.2014-02-04-00

PostgreSQL をモニタリングするために PGSnapper を使用する

PGSnapper を使用すると、Amazon RDS for PostgreSQL のパフォーマンス関連の統計やメトリクスを定期的に収集することができます。詳細については、「PGSnapper を使用して Amazon RDS for PostgreSQL のパフォーマンスをモニタリングする」を参照してください。