[アップデート] Aurora MySQL Version 3 でもバックトラックがサポートされました

2023.01.05

いわさです。

Aurora MySQL にはバックトラックという便利なオプション機能があります。

これまでバックトラック機能は Aurora MySQL v2 (5.7) まではサポートされていましたが、Aurora MySQL v3 (8.0) ではサポートされていませんでした。
しかし、今回のアップデートで遂に Aurora MySQL v3 でもサポートされるようになりました。

Aurora MySQL v3 でバックトラックを使ってみる

まずは Aurora MySQL 3 のクラスターを作成します。

オプションのバックトラック機能を有効化します。
バックトラックウィンドウは引き続き最大 72 時間まで設定が可能です。

作成出来たら MySQL クライアントでサーバーへ接続し、データベースとテーブル・レコードを作成します。

mysql> use hoge;
Database changed
mysql> create table piyo (id int, name varchar(10), updatetime datetime DEFAULT NULL);
Query OK, 0 rows affected (0.06 sec)

mysql> insert into piyo values (1, 'aaa1', '2021-10-27 9:00:00');
Query OK, 1 row affected (0.04 sec)

mysql> insert into piyo values (2, 'bbb1', '2021-10-27 9:00:00');
Query OK, 1 row affected (0.04 sec)

mysql> insert into piyo values (3, 'ccc1', '2021-10-27 9:00:00');
Query OK, 1 row affected (0.03 sec)

mysql> select * from piyo;
+------+------+---------------------+
| id   | name | updatetime          |
+------+------+---------------------+
|    1 | aaa1 | 2021-10-27 09:00:00 |
|    2 | bbb1 | 2021-10-27 09:00:00 |
|    3 | ccc1 | 2021-10-27 09:00:00 |
+------+------+---------------------+
3 rows in set (0.03 sec)

mysql>

その後データベースに変更を加えたいのでレコードを削除しました。

mysql> delete from piyo where id = 2;
Query OK, 1 row affected (0.03 sec)

mysql> select * from piyo;
+------+------+---------------------+
| id   | name | updatetime          |
+------+------+---------------------+
|    1 | aaa1 | 2021-10-27 09:00:00 |
|    3 | ccc1 | 2021-10-27 09:00:00 |
+------+------+---------------------+
2 rows in set (0.03 sec)

ではバックトラック操作を行って、レコード削除前の状態に戻したいと思います。
DB クラスターのアクションからバックトラックを選択し、いつ時点の状態に戻すのかを指定します。

バックトラック操作が完了するまで少し待つ必要があります。
完了したらレコードの状態を確認してみましょう。

mysql> select * from piyo;
No connection. Trying to reconnect...
Connection id:    12
Current database: hoge

+------+------+---------------------+
| id   | name | updatetime          |
+------+------+---------------------+
|    1 | aaa1 | 2021-10-27 09:00:00 |
|    2 | bbb1 | 2021-10-27 09:00:00 |
|    3 | ccc1 | 2021-10-27 09:00:00 |
+------+------+---------------------+
3 rows in set (0.02 sec)

おお、変更前に戻っていますね。

バックトラックを有効化した Aurora MySQL 2 スナップショットを使って Aurora MySQL v3 へバージョンアップ出来るか確認してみる

個人的には Aurora MySQL v3 へのアップグレード周りが気になっていたのでここも確認してみます。
これまではバックトラックが有効化されたクラスターから Aurora MySQL v3 へアップグレードが出来ないという制約がありました。

バックトラックは現在、Aurora MySQL バージョン 3 クラスターでは使用できません。この機能は後続のマイナーバージョンで使用できるようにする予定です。

バックトラックを使用する Aurora MySQL バージョン 2 クラスターがある場合、スナップショットの復元方法を使用して Aurora MySQL バージョン 3 にアップグレードすることは現状できません。この制限は、バックトラック設定がオンになっているかどうかにかかわらず、バックトラッククラスターを使用するすべてのクラスターに適用されます。アップグレード手順の詳細については、Aurora MySQL バージョン 3 へのアップグレード を参照してください。

状況が変わったのでここは是非とも試しておきたいところです。

以下のようにバックトラックを有効化した Aurora MySQL v2 を作成します。

先程と同じような感じで検証用のデータベース・テーブル・レコードを作成します。

mysql> select * from piyo;
+------+------+---------------------+
| id   | name | updatetime          |
+------+------+---------------------+
|    1 | aaa2 | 2021-10-27 09:00:00 |
|    2 | bbb2 | 2021-10-27 09:00:00 |
|    3 | ccc2 | 2021-10-27 09:00:00 |
+------+------+---------------------+
3 rows in set (0.03 sec)

スナップショットを取得します。

そのスナップショットから復元を行います。
復元の際に使用可能なエンジンバージョンとして Aurora MySQL v3 が選択出来るようになっています。
また、復元の際に Aurora MySQL v3 でバックトラックを有効化するかオプションの選択も出来ます。

なお、Aurora MySQL v3 へのアップグレード手順の詳細は以下もご確認ください。

スナップショットから Aurora MySQL v3 クラスターが復元出来たら接続してみます。

mysql> select * from piyo;
+------+------+---------------------+
| id   | name | updatetime          |
+------+------+---------------------+
|    1 | aaa2 | 2021-10-27 09:00:00 |
|    2 | bbb2 | 2021-10-27 09:00:00 |
|    3 | ccc2 | 2021-10-27 09:00:00 |
+------+------+---------------------+
3 rows in set (0.04 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.23    |
+-----------+
1 row in set (0.03 sec)

バックトラックを有効化した Aurora MySQL v2 から、Aurora MySQL v3 へバージョンアップすることが出来ました。

さいごに

本日は Aurora MySQL v3 でもバックトラックがサポートされたので試してみました。
また、バックトラックを有効化した Aurora MySQL v2 から Aurora MySQL v3 へアップグレード出来ることも確認出来ました。

特に、バックトラックの兼ね合いでこれまで Aurora MySQL v3 に切り替えることが出来なかった方には朗報ではないでしょうか。