RDS for PostgreSQL リードレプリカのトラブルシューティング
RDS for PostgreSQL リードレプリカに関するよくある問題のトラブルシューティングについてのアイデアをいくつか以下に紹介します。
- リードレプリカの遅延の原因となるクエリを終了する
-
トランザクションの状態がアクティブまたはアイドルであり、データベース内で長時間実行されているトランザクションは、WAL レプリケーションプロセスへの妨害となる可能性があります。これは、レプリケーション遅延の悪化につながります。このため、PostgreSQL
pg_stat_activityビューを使用して、このようなトランザクションのランタイムを必ずモニタリングしてください。プライマリインスタンスで次のようなクエリを実行して、長時間実行されているクエリのプロセス ID (PID) を検索します。
SELECT datname, pid,usename, client_addr, backend_start, xact_start, current_timestamp - xact_start AS xact_runtime, state, backend_xmin FROM pg_stat_activity WHERE state='active';SELECT now() - state_change as idle_in_transaction_duration, now() - xact_start as xact_duration,* FROM pg_stat_activity WHERE state = 'idle in transaction' AND xact_start is not null ORDER BY 1 DESC;クエリの PID を特定したら、そのクエリを終了することができます。
プライマリインスタンスで次のようなクエリを実行して、長時間実行されているクエリを終了します。
SELECT pg_terminate_backend(PID);