Amazon Relational Database Service (Amazon RDS) for PostgreSQL データベースのメジャーバージョンアップグレードのダウンタイムを最小限に抑え、パフォーマンスを最適化したいと考えています。
概要
注: メジャーバージョンのアップグレードには、既存のアプリケーションと互換性のないデータベースの変更が含まれている場合があります。アップグレードする前に、必ず非本番環境でアップグレードを十分にテストしてください。詳細については、「RDS for PostgreSQL のメジャーバージョンアップグレードを実行する方法」を参照してください。
データベース (DB) インスタンスをアップグレードするには、次のいずれかの方法を使用します。
- スナップショットの復元
- 手動アップグレード
- ブルー/グリーンデプロイ
- AWS Database Migration Service (AWS DMS)
前提条件:
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
アップグレードのパフォーマンスを最適化する
メジャーエンジンのバージョンのアップグレードを実行する際に発生する可能性のある問題を最小限に抑えるには、次の操作を実行してください。
running 状態が 10 分以上続いているトランザクションを特定するには、次のコマンドを実行します。
SELECT * FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
AND state in ('idle', 'idle in transaction', 'idle in transaction (aborted)', 'disabled','active')
AND state_change < current_timestamp - INTERVAL '10' MINUTE
AND usename != 'rdsadmin';
実行時間が長いトランザクションが見つかった場合は、pg_cancel_backend または pg_terminate_backend を使用してそのトランザクションを終了します。詳細については、PostgreSQL のウェブサイトで「Server signaling functions」(サーバーシグナリング関数) を参照してください。
スナップショットの復元によりアップグレードする
DB インスタンスの DB スナップショットを作成し、そのスナップショットを新しいメジャーバージョンにアップグレードしてから、新しい DB インスタンスに復元します。
注: 新しい DB インスタンスには別の名前を使用する必要があります。また、アップグレードプロセス中はアプリケーションを停止する必要があります。また、アップグレードの完了後にアプリケーションエンドポイントを更新する必要があります。
DB インスタンスを手動でアップグレードする
DB インスタンスを手動でアップグレードするには、「エンジンバージョンの手動アップグレード」を参照してください。
注: データベースを手動でアップグレードするにはダウンタイムが必要です。ダウンタイムを最小限に抑えるには、ブルー/グリーンデプロイを使用してください。
ブルー/グリーンデプロイアップグレードを使用する
ブルー/グリーンデプロイを作成するには、「ブルー/グリーンデプロイの作成」を参照してください。グリーン環境では、新しいエンジンバージョンを指定してください。
ブルー/グリーンデプロイの詳細については、「Amazon RDS のブルー/グリーンデプロイの制限と考慮事項」を参照してください。
AWS DMS を使用してアップグレードする
AWS Database Migration Service (AWS DMS) を使用して、現在の DB インスタンスからアップグレードされたバージョンの新しいインスタンスにデータを移行します。AWS DMS は、継続的レプリケーションのための変更データキャプチャ (CDC) をサポートしています。
pg_statistics テーブルをアップグレードする
エンジンのメジャーバージョンアップグレードが完了したら、すべてのデータベースで ANALYZE VERBOSE; コマンドを実行して pg_statistics テーブルをアップグレードします。詳細については、PostgreSQL のウェブサイトで「ANALYZE」を参照してください。