はじめに
本手順はシステム停止を前提としたメジャーバージョンアップ手順
Auroraメジャーバージョンアップの事前作業については以下参照。
環境
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
作業一覧
- 業務停止
- DBスナップショット
- イベントサブスクリプションの停止
- メジャーバージョンアップ
- インスタンス再起動
- 拡張機能のバージョンアップ
- 統計情報の更新
- イベントサブスクリプションの起動
- クライアントのバージョンアップ
- 業務起動
作業内容
1. 業務停止
WEBサービスの停止やSorryPageの表示等によりシステム利用を停止させる。
2. DBスナップショット
[2.DBスナップショット] は必須ではない
メジャーバージョンアップデート内で自動でDBスナップショットが作成されるが、念のため手動でも取得する手順を記載。
Aurora のユーザーガイド
新しいメジャーバージョンへのアップグレードプロセスを開始するとき、Aurora PostgreSQL はクラスターに変更を加える前に Aurora DB クラスターのスナップショットを取得します。
① [RDS]コンソールの左メニューから[スナップショット]を選択し[スナップショットの取得]を押下
② 必要事項を入力し[スナップショットの取得]を押下
DBインスタンス: 作業するDBインスタンス
スナップショット名: 任意の文字列
③ 手動スナップショット一覧にて取得したスナップショットが以下表示であることを確認
3. イベントサブスクリプションの停止
RDSのイベントサブスクリプションにてフェイルオーバー時は自動でシステム再起動する設定をしており、誤動作を防ぐために停止
イベントサブスクリプションが登録されていない場合は不要。
① [RDS]コンソールの左メニューから[イベントサブスクリプション]を選択
② 対象のイベントサブスクリプションを選択し、[編集]を押下
③ 編集画面にて[有効]にて[なし]を選択し、画面最下部の[保存]を押下
④ イベントサブスクリプション一覧にて対象のイベントサブスクリプションの有効列が[なし]と表示されることを確認
4. メジャーバージョンアップ
AWSコンソールからメジャーバージョンアップを実施
① 対象のDBクラスターを選択し、[変更]を押下
② DBエンジンバージョンを変更
③ 追加設定にて事前に作成したパラメータグループを選択し、画面下部の[続行]を押下
④ 変更箇所の確認
⑤ [すぐに適用]を選択し、[クラスターの変更]を押下
⑥ DBのステータスが[利用可能]になったことを確認
5. インスタンス再起動
① リーダーインスタンスの再起動
② 再起動したインスタンスのパラメータグループが[同期中]となっていることを確認
③ フェイルオーバー
④ ①~③をもう1度実施
元ライター(現リーダー)インスタンスに対して実施
6. 拡張機能のバージョンアップ
SELECT * FROM pg_extension;
アップデート後のメジャーバージョンと現状の拡張機能が対応しているかを確認。
本環境では以下がバージョンアップ対象。
・btree_gist (1.5 → 1.6)
・pg_stat_statements (1.6 → 1.9)
詳細の対応表は以下参照。
ALTER EXTENSION <拡張機能名> UPDATE TO '<新しいバージョン>';
postgres=> ALTER EXTENSION pg_stat_statements UPDATE TO '1.9';
ALTER EXTENSION
postgres=> ALTER EXTENSION btree_gist UPDATE TO '1.6';
ALTER EXTENSION
postgres=> SELECT * FROM pg_extension;
oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+--------------------+----------+--------------+----------------+------------+-----------+--------------
14703 | plpgsql | 10 | 11 | f | 1.0 | |
19991 | btree_gin | 10 | 11 | t | 1.3 | |
19994 | pgstattuple | 10 | 11 | t | 1.5 | |
19993 | pg_stat_statements | 10 | 2200 | t | 1.9 | |
19992 | btree_gist | 10 | 11 | t | 1.6 | |
(5 行)
全てのデータベースで拡張機能のバージョンアップが必要
7. 統計情報の更新
必須ではないが念のため本環境では実施
ANALYZE;
\pset pager off
SELECT relname, last_autovacuum,last_autoanalyze,last_analyze FROM pg_stat_user_tables ORDER BY relname;
表示された「last_analyze」列の日時が実行開始から終了までとなっていればOK。
8.イベントサブスクリプションの起動
「3. イベントサブスクリプションの停止」を実施していない場合は不要。
① [RDS]コンソールの左メニューから[イベントサブスクリプション]を選択
② 停止していたイベントサブスクリプションを選択し、[編集]を押下
③ 編集画面にて[有効]にて[あり]を選択し、画面最下部の[保存]を押下
④ イベントサブスクリプション一覧にて対象のイベントサブスクリプションの有効列が[あり]と表示されることを確認
9. クライアントのバージョンアップ
① EC2サーバにTeraterm等で接続
② 以下コマンドにてPostgreSQLクライアントのアップデートを実施
## 現在導入されているPostgresqlパッケージ確認
yum list installed | grep postgresql
## インストール可能パッケージリストにpostgresql14があることを確認
## 何も表示されなかった場合はリポジトリの更新を実施
yum list | grep postgresql14
## リポジトリの更新(pgdg-redhat-repoでインストールする場合)
yum update pgdg-redhat-repo
## postgresql14 パッケージをインストール
yum install postgresql14
## postgresqlクライアントコマンドの優先バージョン確認
## [現在の「最適」バージョンは /usr/pgsql-14/bin/psql です。]と表示されればOK
update-alternatives --display pgsql-psql
yum定義情報(/etc/yum.conf)の「exclude=」行にpostgresqlが含まれているとパッケージが表示されないので注意
10. 業務起動
「1. 業務停止」にて停止させたシステムを再開する。
作業時間
作業名 | 作業時間 |
---|---|
業務停止 | 00:01:00 |
DBスナップショット | 00:06:00 |
イベントサブスクリプションの停止 | 00:01:00 |
メジャーバージョンアップ | 00:31:00 |
インスタンス再起動 | 00:25:00 |
拡張機能のバージョンアップ | 00:10:00 |
統計情報の更新 | 01:33:00 |
イベントサブスクリプションの起動 | 00:02:00 |
クライアントのバージョンアップ | 00:15:00 |
業務起動 | 00:03:00 |