【新機能】Amazon AuroraでCross-Region Read Replicaが可能になりました!

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。

本日Amazon AuroraでCross-Region Replicationの構成が可能になりました。MySQLではCross-Region Replicationが出来ましたが、Auroraでも利用可能となります。なお、既存のAuroraクラスタではバージョンを上げて1.6.5以上にする必要がありそうです。

Cross-Region Replication?

AWSでは、様々なサービスでリージョンを超えたデータのレプリケーションをサポートしています。今回、Amazon Auroraでも同様に他のリージョンへの継続的レプリケーションがサポートされました。

AuroraでRead Replicaを作成する場合は、1つのクラスタの中にReaderを追加するという位置付けになりますが、Cross-Region Replicationでは別リージョンに異なるAuroraクラスタを作成してデータを同期するという形になります。

試してみる

検証する環境

試す環境として、以下のようにAuroraを配置します。

  • レプリケーション元:東京リージョン(ap-northeast-1)
  • レプリケーション先:バージニア北部(us-east-1)

事前設定

まず、Auroraを東京リージョンで普通に起動します。 そして、Auroraのクラスタパラメータグループを設定します。defaultのグループを設定している場合は別のグループを設定する必要があります。

クラスタパラメータグループのbinlog_formatOFFからMIXEDへ設定します。ROWSTATEMENTでも有効になりますが、ドキュメントではMIXEDを推奨しています。

Amazon Aurora とのレプリケーション

RDS_·_AWS_Console

binlog_formatを設定すると、DBクラスターのパラメータグループが再起動の保留中となります。そのため対象のAuroraを再起動しましょう。再起動しなければメンテナンスウィンドウで再起動されます。

RDS_·_AWS_Console

次に対象のAuroraのメニューからクロスリージョンのリードレプリカの作成を選択します。

RDS_·_AWS_Console_と_AWSブログ

設定する内容は、以下のようになっています。

  • インスタンスの仕様
  • DB インスタンスのクラス
  • マルチ AZ 配置
  • 設定
  • リードレプリカのソース
  • DB インスタンス識別子
  • DB クラスター識別子
  • ネットワーク & セキュリティ
  • 送信先リージョン
  • 送信先 DB サブネットグループ
  • パブリックアクセス可能
  • アベイラビリティーゾーン
  • フェイルオーバー
  • 優先度
  • データベースの設定
  • データベースのポート
  • モニタリング
  • 拡張モニタリングを有効にする
  • メンテナンス
  • マイナーバージョン自動アップグレード

貼り付けた画像_2016_06_02_9_18

バージニアのRDSのConsoleを確認すると、Auroraが作成中となります。しばらくすると利用可能になります。

RDS_·_AWS_Console

レプリケーションの動作を確認する

東京リージョンでAuroraにログインします

EC2を立てて東京リージョンのAuroraへログインします。普通にログインできます。

$ mysql -u awsuser -p -h <Auroraエンドポイント> mydb
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.6.10-log MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

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へログインします

ユーザID/パスワードは一緒です。こちらも同じようにログインできます。

$ mysql -uawsuser -p -h <Auroraエンドポイント> mydb
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 5.6.10 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

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>

東京でテーブルを作成します

mysql> create table sample(id int, data varchar(20));
Query OK, 0 rows affected (0.04 sec)

mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| sample         |
+----------------+
1 row in set (0.00 sec)

バージニアでテーブルを確認します

バージニアも同様にテーブルが作成されています。

mysql> show tables;
+----------------+
| Tables_in_mydb |
+----------------+
| sample         |
+----------------+
1 row in set (0.01 sec)

東京でデータを挿入します

mysql> insert into sample(id, data) values(1, 'Ooguri');
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from sample ;
+------+--------+
| id   | data   |
+------+--------+
|    1 | Ooguri |
+------+--------+
1 row in set (0.00 sec)

バージニアでデータを確認します

バージニアも同様にデータが入っていることを確認できます。

mysql> select * from sample ;
+------+--------+
| id   | data   |
+------+--------+
|    1 | Ooguri |
+------+--------+
1 row in set (0.01 sec)

まとめ

もともとAuroraは3AZへ合計6重化してデータを保持しているため極めて高い堅牢性を有しています。そのためCross-Region Replicationは堅牢性ではなくフェイルオーバー先として可用性を上げることが目的になると感じています。幸い東京にはネットワーク的に近いソウルリージョンやシンガポールリージョンがあるので、現実的な切り替え先が複数あります。いざというときのフェイルオーバー先やワールドワイドでのコンテンツ配信等で利用できると思います。

ただし、注意があります。Amazon Auroraはディスクアクセスを減らすことで全体のスループットを上げるという思想があります。しかしCross-Region Replicationを行うために通常は不要のbinlogをディスクへ書き込む必要が有るためレプリケーション元のWriterのパフォーマンスが落ちる事が想定されます。そのためWriteのキャパシティについては注意が必要となります。