Aurora(PostgreSQL)のアップグレード
Aurora(PostgreSQL)のアップグレード
PostgreSQLは1年に1回メジャーバージョンアップし、その後にセキュリティパッチ、バグフィックスなどを含めたマイナーバージョンがリリースされます。メジャーバージョンがリリースされてから5年でEOLを迎えます。
Aurora(PostgreSQL)でも遅れてPostgreSQLのメジャーバージョン、マイナーバージョンがリリースされます。2020年4月時点では、9.6から11.6までのバージョンが利用できます。最新のPostgreSQLは12.2なので、若干古いバージョンになっています。
AWS公式のアップグレードに関する情報は以下のページで確認することができます。
Amazon Aurora PostgreSQLのバージョンの確認
Auroraには、Auroraとデータベースエンジンの2つのバージョンを持っています。
データベースエンジンのバージョンは、通常のPostgreSQLと同様に以下のように確認できます。
今回は後でアップグレードを試すために少し古いバージョン(10.5)を利用しています。
postgres=> SHOW SERVER_VERSION;
server_version
----------------
10.5
(1 row)
次のAuroraのバージョンは以下のように確認できます。
postgres=> SELECT AURORA_VERSION();
aurora_version
----------------
2.1.1
(1 row)
なお、AuroraとPostgreSQLとバージョンの紐づけは以下のページで確認できます。
(Auroraのバージョンを知ると何か良いことがあるのかは分かりませんが。。。)
アップグレードできるバージョンの確認
Auroraをアップグレードできるかどうかは以下のコマンドで確認することができます。
aws rds describe-db-engine-versions --engine aurora-postgresql
例えば、10.5のバージョンの場合は以下のように出力されます。
「"AutoUpgrade": true」で自動アップグレードの対象かどうかが確認できるようになっているようです。
なお、10.5からは10.6~10.11へバージョンアップができるようです。
{
"Engine": "postgres",
"EngineVersion": "10.5",
"DBParameterGroupFamily": "postgres10",
"DBEngineDescription": "PostgreSQL",
"DBEngineVersionDescription": "PostgreSQL 10.5-R1",
"ValidUpgradeTarget": [
{
"Engine": "postgres",
"EngineVersion": "10.6",
"Description": "PostgreSQL 10.6-R1",
"AutoUpgrade": true,
"IsMajorVersionUpgrade": false
},
{
"Engine": "postgres",
"EngineVersion": "10.7",
"Description": "PostgreSQL 10.7-R1",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": false
},
~省略~
{
"Engine": "postgres",
"EngineVersion": "10.11",
"Description": "PostgreSQL 10.11-R1",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": false
},
{
"Engine": "postgres",
"EngineVersion": "11.1",
"Description": "PostgreSQL 11.1-R1",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": true
},
~省略~
{
"Engine": "postgres",
"EngineVersion": "11.6",
"Description": "PostgreSQL 11.6-R1",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": true
}
],
"ExportableLogTypes": [
"postgresql",
"upgrade"
],
"SupportsLogExportsToCloudwatchLogs": true,
"SupportsReadReplica": true,
"SupportedFeatureNames": [],
"Status": "available"
},
アップグレードの概要
インスタンスのアップグレードには以下の2種類があります。
- メジャーバージョンのアップグレード
- マイナーバージョンのアップグレード
メジャーバージョンのアップグレード
10.5から11.7へのアップグレードなどがメジャーバージョンのアップグレードです。
メジャーバージョンのアップグレードは下位互換性がなく、標準でサポートされていません。
そのため、別のDBクラスタを構成し、pg_dump/pg_restoreなどを使用して移行する必要があります。
例えば以下の手順が考えられます。
1)現行のスナップショットを取得。
2)現行のクラスタを停止。
3)現行のスナップショットを用いて新規にAuroraクラスタを構築。
4)AuroraのEndpointに切り替える。
アプリケーションからの書き込みがあるとデータに差分が発生するのでアプリケーションは停止しておく必要があります。
この方法ですとダウンタイムが長くなってしまいますので、ダウンタイムを短くしたい場合はAuroraクラスタ間でレプリケーションを行うことになります。
マイナーバージョンのアップグレード
・マイナーバージョンのアップグレードは下位互換性があります。
例えば、11.6から11.7にアップグレードする場合です。
・自動アップグレードと手動アップグレードの2種類があります。
・アップグレード時にデータベースは停止状態になります。
・拡張機能はアップグレードされません。拡張機能を更新するためにALTER EXTENSION UPDATE のコマンドを実行します。
自動アップグレード
・DBインスタンスの作成時、変更時に、「マイナーバージョン自動アップグレード」を有効にする、もしくは推奨バージョン未満である場合に自動アップグレードされます。
・自動アップグレードはメンテナンスウィンドウで実行されます。
自動アップグレードで勝手にアップグレードして停止するケースが発生するので、無停止のシステムであれば注意が必要です。
手動アップグレードを実行する
手動アップグレードは、メンテナンスウィンドウ中か、すぐに適用するかを選べます。
すぐに適用するを選択した場合、変更直後ではありませんが、可能な限り早くアップグレードが実行されます。
今回は変更の設定をしてから数分後にアップグレードが完了していました。数分間停止したわけではなく、数分後に完了したということで、実際に停止した時間は確認していません。
アップグレードの手順は以下に記載があります。
コンソールからマイナーバージョンをアップグレードする手順は以下のようになります。
今回は10.5から10.7へのマイナーバージョンのアップグレードを試してみます。
コンソールでアップグレードを実行するデータベースを選択して、「変更」を選択します。
「DBエンジンのバージョン」で変更するバージョンを選択します。
今回は10.6から10.11までが選択できます。
次に「変更のスケジュール」でメンテナンスウィンドウ中で実行するか、すぐに適用するかを選択します。
データベースの画面に戻ると、ステータスが変わり、アップグレード待ちの状態になっています。
アップグレード実行後にバージョンを確認すると以下のように10.7へアップグレードされていることが確認できます。
postgres=> SHOW SERVER_VERSION;
server_version
----------------
10.7
(1 row)
イベントを確認すると、以下のように「Database cluster has been patched」と出力されていました。
最後に拡張機能は自動でアップグレードされませんので、必要に応じて手動でアップグレードします。
現在の拡張機能を確認するには以下のように実行します。
postgres=> select * from pg_available_extensions;
name | default_version | installed_version | comment
------------------------------+-----------------+-------------------+---------------------------------------------------------------------------------------------------------------------
dblink | 1.2 | | connect to other PostgreSQL databases from within a database
pg_repack | 1.4.3 | | Reorganize tables in PostgreSQL databases with minimal locks
hstore | 1.4 | | data type for storing sets of (key, value) pairs
postgis_tiger_geocoder | 2.4.4 | | PostGIS tiger geocoder and reverse geocoder
pg_visibility | 1.2 | | examine the visibility map (VM) and page-level visibility info
orafce | 3.6 | | Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS
prefix | 1.2.0 | | Prefix Range module for PostgreSQL
isn | 1.1 | | data types for international product numbering standards
~省略~
installed_versionがdefault_versionより古い場合はアップグレードしておきましょう。(今回はありませんが)
アップグレードするためには以下のコマンドを実行します。
ALTER EXTENSION [拡張名] UPDATE TO [新しいバージョン];
今回はコンソールからアップグレードを実行しましたが、他にもAWS CLIとRDS APIで変更することができます。
参考
Author And Source
この問題について(Aurora(PostgreSQL)のアップグレード), 我々は、より多くの情報をここで見つけました https://qiita.com/mkyz08/items/8adc2374c96683a7f857著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .