###実験①
#####データベースに設定したものとは別VPCでかつデータベースが配置されていないAZのEC2でauroraにアクセス可能か
データベース情報:
VPC:VPC1
データベースのインスタンスがあるAZ:AZ-1a、AZ-1c
パブリックアクセス:あり
EC2情報:
VPC:VPC2
EC2を配置したサブネット:AZ-1dのパブリックサブネット
クライアント:mysql-community-client.x86_64 8.0.27-1.el7
$ mysql -h (データベースのエンドポイント) -P 3306 -u admin -p --enable-local-infile
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 40
Server version: 5.7.12 MySQL Community Server (GPL)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
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 -h (読み取りエンドポイント(roがついているやつ)) -P 3306 -u admin -p --enable-local-infile
$ mysql -h (データベースのエンドポイント) -P 3306 -u admin -p --enable-local-infile
$ mysql -h (インスタンスのエンドポイント) -P 3306 -u admin -p --enable-local-infile
なぜ接続できるかというとエンドポイントがこういう風になっているからです
###実験③
####インスタンスや読み取り専用のエンドポイントでログインした場合書き込み操作はできるか
#####(i).リードレプリカがクラスターにない場合
$ mysql -h (読み取りエンドポイント(roがついているやつ)) -P 3306 -u admin -p --enable-local-infile
mysql> use sampledb
Reading table information for completion of table and colu
You can turn off this feature to get a quicker startup wit
Database changed
mysql> create table user (id int, name varchar(10), addres
Query OK, 0 rows affected (0.03 sec)
mysql>
mysql> insert into user values (1, 'Yamada', 'Tokyo');
Query OK, 1 row affected (0.00 sec)
mysql>
mysql> select * from user;
+------+--------+---------+
| id | name | address |
+------+--------+---------+
| 1 | Yamada | Tokyo |
+------+--------+---------+
1 row in set (0.00 sec)
これは読み取りエンドポイントでログインしたときにリードレプリカがなかったら書き込み可能なDBにログインする仕様なのかもしれません
実際にDBの変数'innodb_read_only'を確認したところOFFになってる
mysql> show variables like 'innodb_read_only';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_read_only | OFF |
+------------------+-------+
1 row in set (0.00 sec)
#####(ii).リードレプリカがある場合
読み取り用エンドポイントでもリードレプリカのエンドポイントを指定してログインしても以下の挙動でした
mysql> CREATE DATABASE sampledb_by_readonly;
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement
mysql> show variables like 'innodb_read_only';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| innodb_read_only | ON |
+------------------+-------+
1 row in set (0.00 sec)