Amazon RDS for MySQLのクロスリージョン・リードレプリカを試す

記事タイトルとURLをコピーする

サーバーワークスの新坂です。

RDS for MySQLでクロスリージョン・リードレプリカ機能が発表されましたね。 Amazon Web Servicesブログの記事を見ますと、世界中のリージョンへデータベースをレプリケーションできるようです。すごいですね。クラウドですね。 【AWS発表】 Amazon RDS for MySQLがクロスリージョン・リードレプリカを作成可能に

でもデータベースを世界へ複製するってパフォーマンスはどうなんでしょう、という疑問がわきます。ということで試してみました。

リードレプリカ作成

まずはリードレプリカを作成してみます。マスターとなるDBインスタンス→「Instance Actions」→「Create Read Replica」を選択します。

次に、レプリカ作成情報を設定します。ここで他のリージョンが選択できます。

完了です。簡単ですね。

レプリカの確認

今回は東京リージョンをマスターとして、サンパウロ・カルフォルニア・シンガポールの3リージョンにリードレプリカを作成しました。 マスターDBインスタンスのページには、リードレプリカが別リージョンに作成されていることが表示されます。

レプリカの遅延

リージョンが異なるということは、ネットワーク的にも遠いということになりますから、データ反映ラグが気になるところです。 簡単なスクリプトを作成して試してみました。

準備

テスト用に 列を1つ持つproduct テーブルを作成します。

CREATE TABLE product ( code VARCHAR(50) );

連続してレコードを挿入するスクリプトを作成します。ワンライナーで書けます。

for i in `seq 1000`; do mysql oreno -h mydb.******.ap-northeast-1.rds.amazonaws.com -uuser -ppassword --execute="INSERT INTO product (code) values ($i);"; done;

各リージョンのレコード数をSELECTするスクリプトを作成します。(非同期実行させます)

mysql oreno -h mydb.******.ap-northeast-1.rds.amazonaws.com   -uuser -ppassword --execute="select 'Tokyo'      as region,count(*) from productG"&
mysql oreno -h mydbsa.******.sa-east-1.rds.amazonaws.com      -uuser -ppassword --execute="select 'Sao Paulo'  as region,count(*) from productG"&
mysql oreno -h mydbca.******.us-west-1.rds.amazonaws.com      -uuser -ppassword --execute="select 'California' as region,count(*) from productG"&
mysql oreno -h mydbsg.******.ap-southeast-1.rds.amazonaws.com -uuser -ppassword --execute="select 'Singapore'  as region,count(*) from productG"&

テスト実行

連続レコード挿入ワンライナーを実行します。手元から東京リージョンのマスターDBへINSERTします。 1秒間あたり、12レコードをINSERTできました。

並行して、各リージョンのレコード数をSELECTするスクリプトを実行して、レコード数の差異を確認してみます。

ある一瞬の結果

手元(東京)から実行しているので、SQL自体も近い順に届くのでしょう。 あまり意味のない結果かもしれませんが、東京とサンパウロで12レコード差です。 毎秒12レコードINSERTしていることと、ネットワーク遅延を考慮するとラグは1秒未満でしょうか。

リージョン レコード数
Tokyo 50,092
Singapore 50,094
California 50,097
Sao Paulo 50,104

CloudWatchで確認

上記のテストスクリプトを1時間ほど実行したところで、CloudWatchで確認します。

シンガポール

グラフに動きが現れません。測定限界値未満なのでしょうか。

カルフォルニア

こちらもグラフに現れません。

サンパウロ

時々1秒の遅延が確認できます。

まとめ

今回のテストは、データが極めて小さいということもあるかもしれませんが、テスト結果から推察するに、レプリケーション・ラグは秒単位というところでしょうか。 CloudWatchでモニタリング・アラートすることも可能ですので、数秒のラグも問題になるような用途の場合は、ぜひとも活用したいところです。