本書はAurora PostgreSQL 11.16 → 14.5 へアップグレードする前の作業について記載する。
バージョン対応表は以下を参照
環境
DB クラスター
エンジン:Aurora postgresql
キャパシティータイプ:シングルマスター
リージョン:ap-northeast-1
DB インスタンス
インスタンスクラス:db.r5.large
AZ(ライター):ap-northeast-1c
AZ(リーダー):ap-northeast-1d
EC2
インスタンスタイプ:c5.large
AZ:ap-northeast-1d
OS:Red Hat Enterprise Linux 7.7
導入済みパッケージ:postgresql11-11.10-1PGDG.rhel7.x86_64
postgresql11-libs-11.10-1PGDG.rhel7.x86_64
作業一覧
- カスタムパラメータグループ作成
- サポートされていない使用の確認
注意
カスタムパラメータグループ作成は必須ではないが、作成することを推奨。
パラメータグループをデフォルトに設定した場合、パラメータの変更不可。
デフォルトからカスタムパラメータへ変更する際に再起動が必須となる。
作業手順
1. カスタムパラメータグループ作成
カスタムパラメータグループには2種類ある
1. DB パラメータ グループ
2. DB クラスター パラメータグループ
違いはインスタンス別で設定可能か、クラスター単位で設定可能かどうか。
簡単に言えば [1. DB パラメータ グループ] の設定値が優先で適用され、[1. DB パラメータ グループ] でデフォルト値の場合、[2. DB クラスター パラメータグループ] の設定値が適用される。
①DB パラメータ グループ作成
パラメータグループファミリー
バージョンアップ後のバージョンを選択
タイプ
DB Parameter Group
を選択
グループ名/説明
任意の文字列を入力
②DB クラスター パラメータグループ作成
パラメータグループファミリー
バージョンアップ後のバージョンを選択
タイプ
DB Cluster Parameter Group
を選択
グループ名/説明
任意の文字列を入力
③各パラメータの変更
例)カスタムパラメータグループの[timezone]の変更
UTC → Asia/Tokyo へ変更
2. サポートされていない使用の確認
①準備済みのトランザクションが存在しないことを確認
SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
postgres=> SELECT count(*) FROM pg_catalog.pg_prepared_xacts;
count
-------
0
(1 行)
② reg* データ型が使用されていないことを確認
SELECT count(*) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a
WHERE c.oid = a.attrelid
AND NOT a.attisdropped
AND a.atttypid IN ('pg_catalog.regproc'::pg_catalog.regtype,
'pg_catalog.regprocedure'::pg_catalog.regtype,
'pg_catalog.regoper'::pg_catalog.regtype,
'pg_catalog.regoperator'::pg_catalog.regtype,
'pg_catalog.regconfig'::pg_catalog.regtype,
'pg_catalog.regdictionary'::pg_catalog.regtype)
AND c.relnamespace = n.oid
AND n.nspname NOT IN ('pg_catalog', 'information_schema');
postgres=> SELECT count(*) FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n, pg_catalog.pg_attribute a
postgres-> WHERE c.oid = a.attrelid
postgres-> AND NOT a.attisdropped
postgres-> AND a.atttypid IN ('pg_catalog.regproc'::pg_catalog.regtype,
postgres(> 'pg_catalog.regprocedure'::pg_catalog.regtype,
postgres(> 'pg_catalog.regoper'::pg_catalog.regtype,
postgres(> 'pg_catalog.regoperator'::pg_catalog.regtype,
postgres(> 'pg_catalog.regconfig'::pg_catalog.regtype,
postgres(> 'pg_catalog.regdictionary'::pg_catalog.regtype)
postgres-> AND c.relnamespace = n.oid
postgres-> AND n.nspname NOT IN ('pg_catalog', 'information_schema');
count
-------
0
(1 行)
③template1 と template0 の確認
template1 と template0 が存在し、テンプレートとしてリストされていること
SELECT datname, datistemplate FROM pg_database;
postgres=> SELECT datname, datistemplate FROM pg_database;
datname | datistemplate
-----------+---------------
template0 | t
rdsadmin | f
template1 | t
postgres | f
template1 と template0 の [datistemplate] の値が「t」であること
④論理的なレプリケーションスロットがないことを確認
SELECT * FROM pg_replication_slots;
postgres=> SELECT * FROM pg_replication_slots;
slot_name | plugin | slot_type | datoid | database | temporary | active | active_pid | xmin | catalog_xmin | restart_lsn | confirmed_flush_lsn
-----------+--------+-----------+--------+----------+-----------+--------+------------+------+--------------+-------------+---------------------
(0 行)
⑤拡張機能の確認
インストール済みの拡張機能に以下がある場合は、Auroraメジャーバージョンアップ前に拡張機能のアップデートを実施
- pgRouting
- postgis_raster
- postgis_tiger_geocoder
- postgis_topology
- address_standardizer
- address_standardizer_data_us
SELECT * FROM pg_extension;
ALTER EXTENSION PostgreSQL-extension UPDATE TO 'new-version';
インストールされている拡張機能ごとにアップデートが必要
参考
AWS公式 Aurora PostgreSQL DBエンジンのアップグレード
メジャーバージョンアップ
マイナーバージョンアップ