ここからは、各種クエリを実行し、ログやメトリクスを確認してみましょう。
mysql -h ${DB_HOST} -p${DB_PASS} -uadmin ${DB_DATABASE}
その後、次のクエリを実行します。
select value, count(*) from data group by value;
おおよそ5秒ほどで結果が返されます。
(略)
9534 rows in set (5.87 sec)
MySQLでは遅いクエリ = スロークエリのログが設定が可能です。Aurora MySQL でもそれを有効にします。 そのためには、DBのパラメータを設定する必要があります。
以下の内容でパラメータグループを作成します。
aurora-mysql5.7
であることを確認DB Parameter Group (DB パラメータグループ)
であることを確認aurora-mysql57-slow-log
を入力aurora-mysql57-slow-log
を入力それぞれ値を編集し、「変更の保存」をクリックして下さい。
1
を設定1
を設定
FILE
パラメータ自体の変更は再起動が不要なものもあるため、クラスタ作成時には独自のパラメータグループを作成し指定することが望ましいですが、今回は既に作成・適用済みのため、新たに変更する必要があります。
本来の運用場面であれば、メンテナンス時間に実施することになりますが、この作業では意図的に稼働中に再起動を行ってみましょう。
アプリケーションから見た DBインスタンス の挙動を確認するため、EC2インスタンスへ接続し、それぞれ下記のコマンドを実行します。
DB_WRITER_ENDPOINT='<your-writer-aurora-host.com>'
DB_READER_ENDPOINT='<your-reader-aurora-host.com>'
DB_PASS='wordpress'
DB_DATABASE='wordpress'
上記の通り、4つのシェル変数を設定します。Auroraクラスターの 「書き込みエンドポイント」と「読み込みエンドポイント」の2つのホスト名を適切に変数の値として設定して実行して下さい。
while true; do
echo '---- writer ----'
mysql -h ${DB_WRITER_ENDPOINT} -p${DB_PASS} -uadmin ${DB_DATABASE} -e 'select * from data where id = 1;'
mysql -h ${DB_WRITER_ENDPOINT} -p${DB_PASS} -uadmin ${DB_DATABASE} -e "update data set ts = '$(date +'%Y-%m-%d %H:%M:%S')' where id = 1;"
echo '---- reader ----'
mysql -h ${DB_READER_ENDPOINT} -p${DB_PASS} -uadmin ${DB_DATABASE} -e 'select * from data where id = 1;'
sleep 1
done
これにより、アプリケーション側からみたDB接続に関するエラー・異常があれば認識することができます。
ではパラメータグループの変更を行ってみましょう。
この時点では、まだDBの再起動は行われません。
……………。
確認できたでしょうか?
一瞬の出来事でしたが、再起動する様子が見えたかと思います。
下記はその一例です。
---- writer ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:39 | 97930 |
+----+---------------------+-------+
---- reader ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:40 | 97930 |
+----+---------------------+-------+
---- writer ----
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
---- reader ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:40 | 97930 |
+----+---------------------+-------+
---- writer ----
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
---- reader ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:40 | 97930 |
+----+---------------------+-------+
---- writer ----
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
---- reader ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:40 | 97930 |
+----+---------------------+-------+
---- writer ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:40 | 97930 |
+----+---------------------+-------+
---- reader ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:40 | 97930 |
+----+---------------------+-------+
---- writer ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:44 | 97930 |
+----+---------------------+-------+
---- reader ----
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-ro-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
---- writer ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:45 | 97930 |
+----+---------------------+-------+
---- reader ----
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-ro-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
---- writer ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:47 | 97930 |
+----+---------------------+-------+
---- reader ----
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-ro-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
---- writer ----
+----+---------------------+-------+
| id | ts | value |
+----+---------------------+-------+
| 1 | 2020-xx-yy 12:03:48 | 97930 |
+----+---------------------+-------+
---- reader ----
ERROR 2003 (HY000): Can't connect to MySQL server on 'aurora-user1-cluster.cluster-ro-hogehoge.ap-northeast-1.rds.amazonaws.com' (111)
---- writer ----
+----+---------------------+-------+
| id | ts | value |
(以降は正常に動作)
Read replica has been disconnected from master. Restarting Mysql.
というエラーメッセージが確認できます。これらの情報から、発生した状況を読み解くことができます
select
とupdate
クエリです。次に、該当DBの「設定」タブからパラメータグループが変更されているかを確認してください。
Auroraクラスター は 通常60秒以内 には再起動が完了し、データベースキャッシュも保持することができます。