初めに
Auroraクラスタのエンジンバージョンアップした後に
- 元のバージョンに戻したくなった
- アプリケーションが参照している接続エンドポイントを変更せずに、ロールバックが必要になった
といったケースはよくある事象かと思います。
Auroraクラスターはバージョンダウンできませんが、バージョンの古いDBスナップショットがあれば、スナップショットからクラスターを復元しバックアップ地点までロールバックできます。
また、クラスターのエンドポイント名がクラスター名依存のため、復元したDBのクラスター名を、元のDBクラスターから新しいDBクラスターに譲ることで、アプリケーションが参照しているエンドポイント名を維持できます。
本記事では、実際の手順について解説します。
前提
ダウングレードしたいエンジンバージョン(アップグレード前)のDBスナップショットがあること。
注意点
- スナップショットから復元してるためデータがロールバックされてしまいます。
- ダウンタイムが発生します。
環境
作業前の確認
アップグレード済みのクラスター(8.0.mysql_aurora.3.09.0、MySQL 8.0.40)
Auroraクラスターエンドポイントを使ってDB接続。DBのMySQLバージョンが8.0.40であることを確認します。
[root@●●● bin]# mysql -h test-db-main-cluster.cluster-●●●.ap-northeast-1.rds.amazonaws.com -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 588 Server version: 8.0.40 24b0343c Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
アップグレード前のスナップショットが存在することを確認します(8.0.mysql_aurora.3.05.2)
手順
アップグレード前のスナップショットでクラスターを復元する
コンソールのスナップショット一覧から、アップグレード前のスナップショットを選択し、詳細画面からDBクラスターを復元します。
DBインスタンス名を「test-db-sub」とします。
DBクラスター名は復元後自動でDBインスタンス名+「-cluster」になります。(この場合test-db-sub-cluster)

DBクラスター、DBインスタンスが復元されたことを確認します。
アップグレード済みのDBクラスターとDBインスタンスの名称を復元したDBクラスターとDBインスタンスに譲る
- 元々のDBインスタンス名を空けるため、DBインスタンス名を退避する
コンソールからDBインスタンスを選択し、DBインスタンスの設定変更画面からDBインスタンス名、DBクラスター名を変更します。
DBインスタンス名:test-db-main → test-db-main-moved DBクラスター名:test-db-main-cluster → test-db-main-cluster-moved
エンドポイント名がクラスター名依存のため、ここで元々使われてるエンドポイントに繋がらなくなります。

- 復元したインスタンスの識別子を元のDBインスタンス名、DBクラスター名に変更する
DB名を退避した時と同じ手順でDBインスタンス名、DBクラスター名を変更します。
DBインスタンス名:test-db-sub → test-db-main DBクラスター名:test-db-sub-cluster → test-db-main-cluster
ここで繋がらなくなったエンドポイントが復活します。

接続確認
Auroraクラスターエンドポイントを使ってDB接続します。MySQLバージョンが8.0.32にロールバックされたことを確認します。
[root@●●● bin]# mysql -h test-db-main-cluster.cluster-●●●.ap-northeast-1.rds.amazonaws.com -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 872 Server version: 8.0.32 Source distribution Copyright (c) 2000, 2023, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
最後に
当記事で紹介された方法でAuroraエンジンバージョンをロールバックできますが、アップグレードする時のトラブル対策としてBlue/Greenデプロイを検討するのも一考です。
制約事項を確認し、こちらを使用することも考慮してください。
Blue/Greenデプロイの制約事項
コメント