RDS-MySQLのクロスリージョンリードレプリカの昇格時間を計測してみました。

計測方法

  • Masterはバージニア、Replicaはオレゴン
  • MySQLのバージョンは5.6.23
  • 1DB、約6000万レコード
  • 計測開始はオレゴン側で[リードレプリカを昇格]ボタンを押す
  • [SELECT CURTIME()]で時間表示とともに、Insertを発行
  • 昇格前はInsertに失敗するはず
  • 昇格後はInsertに成功するはず
# 昇格前
mysql> SELECT CURTIME();INSERT INTO item () VALUES ();
+-----------+
| CURTIME() |
+-----------+
| 02:50:01  |
+-----------+
1 row in set (0.07 sec)
​
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement

mysql> SELECT CURTIME();INSERT INTO item () VALUES ();
+-----------+
| CURTIME() |
+-----------+
| 02:51:36  |
+-----------+
1 row in set (0.08 sec)
​
ERROR 2013 (HY000): Lost connection to MySQL server during query

# 昇格のための再起動中
​mysql>
mysql>
mysql> SELECT CURTIME();INSERT INTO item () VALUES ();
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2003 (HY000): Can't connect to MySQL server on 'test-rep3.cuplkakj9btg.us-west-2.rds.amazonaws.com' (111)
ERROR:
Can't connect to the server
​
No connection. Trying to reconnect...
ERROR 2003 (HY000): Can't connect to MySQL server on 'test-rep3.cuplkakj9btg.us-west-2.rds.amazonaws.com' (111)
ERROR:
Can't connect to the server
​
# 昇格後
mysql>
mysql>
mysql> SELECT CURTIME();INSERT INTO item () VALUES ();
No connection. Trying to reconnect...
Connection id:    1
Current database: testdb
​
+-----------+
| CURTIME() |
+-----------+
| 02:51:44  |
+-----------+
1 row in set (0.07 sec)
​
Query OK, 1 row affected (0.09 sec)
​
mysql>
mysql>
mysql> SELECT CURTIME();INSERT INTO item () VALUES ();
+-----------+
| CURTIME() |
+-----------+
| 02:51:47  |
+-----------+
1 row in set (0.08 sec)
​
Query OK, 1 row affected (0.08 sec)
Add Comment

結果

  • 再起動の間、約8秒ほどのサービス断でオレゴンで利用可能となった
  • 1レコードのDBに対しても同じく8秒程度だった
  • データ件数により変わるかもしれないが、大きな違いなさそう?

元記事はこちら

【小ネタ】RDS-MySQLのクロスリージョンリードレプリカの昇格時間を計測【cloudpack大阪ブログ】