[OCI]東京リージョンのMDS（MySQL DB System）と大阪リージョンのMDSの間でレプリケーションを構成してみた

# はじめに

東京リージョンに作成したMySQL DBシステムと大阪リージョンに作成したMySQL DBシステムの間でレプリケーションを構成する手順を検証してみました。
![VCN_Peering_DNS_Integration.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/3b2ec88b-eb65-5652-6875-7eaa7612d48d.jpeg)

# 0.ネットワークの準備

[こちら](https://qiita.com/500InternalServerError/items/1cb5a05f5ff711b0ccb2)の記事の1.〜3.と同様に、東京リージョン、大阪リージョンそれぞれにVCNを作成、VCN間をリモートVCNピアリングで接続し、VNC間で相互にDNSを参照できるようにしておきます。

また、VCN_TokyoとVCN_Osakaの間で、MySQLが使用する通信（TCP 3306/33060）ができるよう、セキュリティ・リストを適切に設定します。

# 1.MySQL DB Systemの作成
東京リージョン、大阪リージョンにMySQL DBシステムを作成します。

＜東京リージョン＞

| 項目      |       値 | 
|:-----------------|:------------------:|
| 名前             |              MDS Tokyo |
| 構成           |            スタンドアロン |
| 管理者資格証明ユーザ名|              admin |
| パスワード              | Demo#1Demo#1 |
| パスワードの確認         | Demo#1Demo#1 |
| 仮想クラウド・ネットワーク | VCN_Tokyo |
| サブネット          | Subnet_Tokyo |
| 可用性ドメイン       |　AD-1 |
| シェイプの選択          | 任意のシェイプ |
| データ・ストレージ・サイズ(GB)|　任意の容量 |
| ネットワーキング：ホスト名          |mds-tokyo |
| ネットワーキング：IPアドレス          |10.0.1.200 |
| ネットワーキング：MySQLポート          |3306 |
| ネットワーキング：MySQL Xプロトコル・ポート          |33060 |

＜大阪リージョン＞

| 項目      |       値 | 
|:-----------------|:------------------:|
| 名前             |              MDS Osaka |
| 構成           |            スタンドアロン |
| 管理者資格証明ユーザ名|              admin |
| パスワード              | Demo#1Demo#1 |
| パスワードの確認         | Demo#1Demo#1 |
| 仮想クラウド・ネットワーク | VCN_Osaka |
| サブネット          | Subnet_Osaka |
| 可用性ドメイン       |　AD-1 |
| シェイプの選択          | 任意のシェイプ |
| データ・ストレージ・サイズ(GB)|　任意の容量 |
| ネットワーキング：ホスト名          |mds-osaka |
| ネットワーキング：IPアドレス          |10.1.1.200 |
| ネットワーキング：MySQLポート          |3306 |
| ネットワーキング：MySQL Xプロトコル・ポート          |33060 |

# 2.作業用のComputeインスタンスの作成と準備

東京リージョンのSubnet_Tokyoに作業用のComputeインスタンスを作成します。
今回はOSはOracle Linux 7.9を選択しました。

作成したComputeインスタンスにopcユーザでSSH接続します。

MySQL Shellをインストールします。

```
sudo yum install -y mysql-shell
```

OCI CLIをインストールします。

```
sudo yum install -y python36-oci-cli
```

環境に合わせてOCI CLIをセットアップします。

```
oci setup config
```

# 3.ダンプ用のオブジェクト・ストレージ・バケットの作成
今回は「forMDS」という名前のバケットを東京リージョンに作成しました。
![スクリーンショット 2021-11-19 9.45.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/fa46db1a-c4f0-bcb6-d5e3-c38c1eeab4af.png)

# 4.MySQL Shellの接続確認

MySQL Shellから東京リージョンに作成したMDS「MDS Tokyo」に接続できることを確認します。

```
[opc@mds-client ~]$ mysqlsh admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com
Please provide the password for 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com': ************
MySQL Shell 8.0.27

Copyright (c) 2016, 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 '\?' for help; '\quit' to exit.
Creating a session to 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 10 (X protocol)
Server version: 8.0.27-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS > \q
Bye!
[opc@mds-client ~]$ 
```

同様に、MySQL Shellから大阪リージョンに作成したMDS「MDS Osaka」に接続できることを確認します。

```
[opc@mds-client ~]$ mysqlsh admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com
Please provide the password for 'admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com': ************
MySQL Shell 8.0.27

Copyright (c) 2016, 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 '\?' for help; '\quit' to exit.
Creating a session to 'admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 11 (X protocol)
Server version: 8.0.27-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn JS > \q
Bye!
[opc@mds-client ~]$ 
```

# 5.レプリケーションのソースとなるDB「MDS Tokyo」の準備
MySQL Shellから「MDS Tokyo」に接続します。

```
[opc@mds-client ~]$ mysqlsh admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com
Please provide the password for 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com': ************
MySQL Shell 8.0.27

Copyright (c) 2016, 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 '\?' for help; '\quit' to exit.
Creating a session to 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 10 (X protocol)
Server version: 8.0.27-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS > 
```

MySQL Shellの実行モードをSQLに切り替えます。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS > \sql
Switching to SQL mode... Commands end with ;
```

「testdb」スキーマを作成します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn SQL > CREATE DATABASE testdb;

Query OK, 1 row affected (0.0034 sec)
```

接続先を「testdb」に切り替えます。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn SQL > use testdb;
Default schema set to `testdb`.
Fetching table and column names from `testdb` for auto-completion... Press ^C to stop.
```

レプリケーション動作を確認するためのテーブル「dept」を作成します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL > CREATE TABLE dept (
                                                  -> deptno INT,
                                                  -> dname VARCHAR(14),
                                                  -> loc VARCHAR(13),
                                                  -> PRIMARY KEY (deptno) 
                                                  -> );
Query OK, 0 rows affected (0.0155 sec)
```

テーブル「dept」にデータを追加します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL > INSERT INTO dept VALUES (10,'ACCOUNTING','NEW YORK');
Query OK, 1 row affected (0.0046 sec)
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL > INSERT INTO dept VALUES (20,'RESEARCH','DALLAS');
Query OK, 1 row affected (0.0028 sec)
```

テーブル「dept」の内容を確認します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL > select * from dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
+--------+------------+----------+
2 rows in set (0.0006 sec)
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL >
```

MySQL Shellを終了します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb SQL > \q
Bye!
[opc@mds-client ~]$
```

# 6.ソースDBのオブジェクト・ストレージへのエクスポート

MySQL Shellから「MDS Tokyo」に接続します。

```
[opc@mds-client ~]$ mysqlsh admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com
Please provide the password for 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com': ************
MySQL Shell 8.0.27

Copyright (c) 2016, 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 '\?' for help; '\quit' to exit.
Creating a session to 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 10 (X protocol)
Server version: 8.0.27-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS > 
```

「util.dumpInstance」コマンドで「MDS Tokyo」をバケット「forMDS」にエクスポートします。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS > util.dumpInstance("",{osBucketName: "forMDS", ocimds: true, threads: 2, compatibility: ["strip_definers", "strip_restricted_grants"]})
Acquiring global read lock
Global read lock acquired
Initializing - done 
Gathering information - done 
All transactions have been started
Locking instance for backup
Global read lock has been released
Checking for compatibility with MySQL Database Service 8.0.27
NOTE: User 'admin'@'%' had restricted privileges (BACKUP_ADMIN, FLUSH_TABLES, PROXY, ROLE_ADMIN) removed
NOTE: User 'administrator'@'%' had restricted privileges (BACKUP_ADMIN, FLUSH_TABLES, ROLE_ADMIN) removed
NOTE: User 'ociadmin'@'127.0.0.1' had restricted privileges (AUDIT_ADMIN, AUTHENTICATION_POLICY_ADMIN, BACKUP_ADMIN, BINLOG_ADMIN, BINLOG_ENCRYPTION_ADMIN, CLONE_ADMIN, CREATE TABLESPACE, ENCRYPTION_KEY_ADMIN, FILE, FLUSH_OPTIMIZER_COSTS, FLUSH_STATUS, FLUSH_TABLES, FLUSH_USER_RESOURCES, GROUP_REPLICATION_ADMIN, GROUP_REPLICATION_STREAM, INNODB_REDO_LOG_ARCHIVE, INNODB_REDO_LOG_ENABLE, PASSWORDLESS_USER_ADMIN, PERSIST_RO_VARIABLES_ADMIN, PROXY, RELOAD, REPLICATION_SLAVE_ADMIN, ROLE_ADMIN, SERVICE_CONNECTION_ADMIN, SESSION_VARIABLES_ADMIN, SET_USER_ID, SHOW_ROUTINE, SHUTDOWN, SUPER, SYSTEM_USER, SYSTEM_VARIABLES_ADMIN, TABLE_ENCRYPTION_ADMIN) removed
NOTE: User 'ocirpl'@'%' had explicit grants on mysql schema object `mysql`.`slave_master_info` removed
NOTE: User 'ocirpl'@'%' had restricted privileges (SERVICE_CONNECTION_ADMIN, SYSTEM_USER) removed
NOTE: Database testdb had unsupported ENCRYPTION option commented out
Compatibility issues with MySQL Database Service 8.0.27 were found and repaired. Please review the changes made before loading them.
Validating MDS compatibility - done       
Writing global DDL files
Writing users DDL
Running data dump using 2 threads.
NOTE: Progress information uses estimated values and may not be accurate.
Writing schema metadata - done       
Writing DDL - done       
Writing table metadata - done       
Starting data dump
100% (2 rows / ~2 rows), 0.00 rows/s, 0.00 B/s uncompressed, 0.00 B/s compressed
Dump duration: 00:00:00s
Total duration: 00:00:00s
Schemas dumped: 1
Tables dumped: 1
Uncompressed data size: 42 bytes
Compressed data size: 51 bytes
Compression ratio: 0.8
Rows written: 2
Bytes written: 51 bytes
Average uncompressed throughput: 42.00 B/s
Average compressed throughput: 51.00 B/s
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS > 
```

MySQL Shellを終了します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb JS > \q
Bye!
[opc@mds-client ~]$
```

# 7.オブジェクト・ストレージからターゲットDBへのインポート

MySQL Shellから「MDS Osaka」に接続します。

```
 [opc@mds-client ~]$ mysqlsh admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com
Please provide the password for 'admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com': ************
MySQL Shell 8.0.27

Copyright (c) 2016, 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 '\?' for help; '\quit' to exit.
Creating a session to 'admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 17 (X protocol)
Server version: 8.0.27-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn JS >
```

先ほどバケット「forMDS」にエクスポートした「MDS Tokyo」のダンプを、「util.loadDump」コマンドで「MDS Osaka」にインポートします。
こちらの例では、MySQL Shell 8.0.22から利用可能になった「updateGtidSet」オプションを使用して、レプリケーションの開始に必要となる、ターゲットDBの「gtid_purged」を自動で設定しています。

```
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn JS >  util.loadDump("", {osBucketName: "forMDS", threads: 2, loadUsers: true, updateGtidSet: "append"})
Loading DDL, Data and Users from OCI ObjectStorage bucket=forMDS, prefix='' using 2 threads.
Opening dump...
Target is MySQL 8.0.27-u1-cloud (MySQL Database Service). Dump was produced from MySQL 8.0.27-u1-cloud
Fetching dump data from remote location...
Listing files - done 
Scanning metadata - done       
Checking for pre-existing objects...
Executing common preamble SQL
Executing DDL - done       
Executing view DDL - done       
Starting data load
Executing user accounts SQL...                      
NOTE: Skipping CREATE/ALTER USER statements for user 'admin'@'%'
NOTE: Skipping CREATE/ALTER USER statements for user 'administrator'@'%'
NOTE: Skipping CREATE/ALTER USER statements for user 'ociadmin'@'127.0.0.1'
NOTE: Skipping CREATE/ALTER USER statements for user 'ocirpl'@'%'
NOTE: Skipping GRANT statements for user 'admin'@'%'
NOTE: Skipping GRANT statements for user 'administrator'@'%'
NOTE: Skipping GRANT statements for user 'ociadmin'@'127.0.0.1'
NOTE: Skipping GRANT statements for user 'ocirpl'@'%'
NOTE: Skipping CREATE/ALTER USER statements for user 'admin'@'%'
Executing common postamble SQL                      
100% (42 bytes / 42 bytes), 0.00 B/s, 1 / 1 tables done
Recreating indexes - done       
Appending dumped gtid set to GTID_PURGED               
1 chunks (2 rows, 42 bytes) for 1 tables in 1 schemas were loaded in 1 sec (avg throughput 42.00 B/s)
0 warnings were reported during the load.              
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn JS >
```

MySQL Shellを終了します。

```
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn JS > \q
Bye!
[opc@mds-client ~]$ 
```

# 8.ソースDBでのレプリケーション・ユーザの作成

MySQL Shellから「MDS Tokyo」に接続します。

```
[opc@mds-client ~]$ mysqlsh admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com
Please provide the password for 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com': ************
MySQL Shell 8.0.27

Copyright (c) 2016, 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 '\?' for help; '\quit' to exit.
Creating a session to 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 32 (X protocol)
Server version: 8.0.27-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS >
```

MySQL Shellの実行モードをSQLに切り替えます。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS > \sql
Switching to SQL mode... Commands end with ;
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn SQL >
```

レプリケーションのためのユーザー「replication_user」を作成します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn SQL > CREATE USER replication_user@'%' IDENTIFIED BY 'DEMO#1Demo#1' REQUIRE SSL;
Query OK, 0 rows affected (0.0081 sec)
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn SQL >
```

「replication_user」に必要な権限を付与します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn SQL > GRANT REPLICATION SLAVE on *.* to replication_user@'%';
Query OK, 0 rows affected (0.0027 sec)
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn SQL >
```

# 9.レプリケーション・チャネルの作成

「MDS Osaka」の詳細画面の「チャネル」に移動します。
![スクリーンショット 2021-11-19 10.21.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/e89a6d4e-543e-32f9-62da-ed24eb31fc00.png)
「チャネルを作成」をクリックします。
![スクリーンショット 2021-11-19 9.58.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/b8c56094-c937-374c-86c0-1624ad4e3102.png)
チャネルの作成画面が表示されます。
![スクリーンショット 2021-11-19 10.01.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f8d7d797-b955-58ed-14c7-92b9b9d4f811.png)
以下の内容を入力し、「チャネルの作成」をクリックします。

| 項目      |       値 | 
|:-----------------|:------------------:|
| 名前             |Channel to MDS Tokyo |
| 作成時に自動的に有効化|オン |
| ソース接続：ホスト名|mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com |
| ソース接続：ポート| 3306 |
| ソース接続：ユーザー名| replication_user |
| ソース接続：パスワード| Demo#1Demo#1 |
| ソース接続：パスワードの確認| Demo#1Demo#1 |
| ソース接続：SSLモード| 必須（REQUIRED)　 |
| ターゲット：Applierユーザー名| admin |
| ターゲット：チャネル名|replication_channel（デフォルト）　 |

しばらく待つと、チャネルが有効になります。

# 10.レプリケーション動作の確認

MySQL Shellから「MDS Tokyo」に接続します。

```
[opc@mds-client ~]$ mysqlsh admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com
Please provide the password for 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com': ************
MySQL Shell 8.0.27

Copyright (c) 2016, 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 '\?' for help; '\quit' to exit.
Creating a session to 'admin@mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 32 (X protocol)
Server version: 8.0.27-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  mds-tokyo.subnettokyo.vcntokyo.oraclevcn JS >
```

MySQL Shellの実行モードをSQLに切り替えます。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  JS > \sql
Switching to SQL mode... Commands end with ;
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL >
```

接続先を「testdb」に切り替えます。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL > use testdb
Default schema set to `testdb`.
Fetching table and column names from `testdb` for auto-completion... Press ^C to stop.
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL >
```

テーブル「dept」の内容を確認します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL > select * from dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
+--------+------------+----------+
2 rows in set (0.0006 sec)
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL >
```

新しいSSH接続を開き、MySQL Shellから「MDS Osaka」に接続します。

```
[opc@mds-client ~]$ mysqlsh admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com
Please provide the password for 'admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com': ************
MySQL Shell 8.0.27

Copyright (c) 2016, 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 '\?' for help; '\quit' to exit.
Creating a session to 'admin@mds-osaka.subnetosaka.vcnosaka.oraclevcn.com'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 11 (X protocol)
Server version: 8.0.27-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn JS >
```

MySQL Shellの実行モードをSQLに切り替えます。

```
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn JS > \sql
Switching to SQL mode... Commands end with ;
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn SQL >
```

接続先を「testdb」に切り替えます。

```
 MySQL  mds-osaka.subnetosaka.vcnosaka.oraclevcn SQL > use testdb
Default schema set to `testdb`.
Fetching table and column names from `testdb` for auto-completion... Press ^C to stop.
 MySQL  mds-osaka.subnetosaka.vcnosaka testdb  SQL > 
```

テーブル「dept」の内容を確認します。

```
 MySQL  mds-osaka.subnetosaka.vcnosaka testdb  SQL > SELECT * FROM dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
+--------+------------+----------+
2 rows in set (0.0089 sec)
 MySQL  mds-osaka.subnetosaka.vcnosaka testdb  SQL >
```

「MDS Tokyo」のテーブル「dept」にレコードを追加します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL > INSERT INTO dept VALUES (30,'SALES','CHICAGO');
Query OK, 1 row affected (0.0023 sec)
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL >
```

テーブル「dept」の内容を確認します。

```
 MySQL  mds-tokyo.subnettokyo.vcntokyo testdb  SQL > select * from dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
+--------+------------+----------+
3 rows in set (0.0010 sec)
```

「MDS Osaka」のテーブル「dept」の内容を確認します。

```
 MySQL  mds-osaka.subnetosaka.vcnosaka testdb  SQL > select * from dept;
+--------+------------+----------+
| deptno | dname      | loc      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
+--------+------------+----------+
3 rows in set (0.0090 sec)
 MySQL  mds-osaka.subnetosaka.vcnosaka testdb  SQL >
```

「MDS Tokyo」のテーブル「dept」の変更内容が、「MDS Osaka」のテーブル「dept」に反映されていることが確認できました。

# 11.レプリケーションのステータス確認

ターゲットDB「MDS Osaka」で「show replica status」コマンドすることでレプリケーションのステータスを確認できます。

```
 MySQL  mds-osaka.subnetosaka.vcnosaka testdb  SQL > show replica status;
+----------------------------------+----------------------------------------------+------------------+-------------+---------------+-------------------+---------------------+--------------------------------------+---------------+-----------------------+--------------------+---------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+--------------------------------------+-------------------------+-----------+---------------------+----------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------------------------------------------------------------------------+---------------+----------------------+---------------------+--------------------+------------------------+-----------------------+-------------------+
| Replica_IO_State                 | Source_Host                                  | Source_User      | Source_Port | Connect_Retry | Source_Log_File   | Read_Source_Log_Pos | Relay_Log_File                       | Relay_Log_Pos | Relay_Source_Log_File | Replica_IO_Running | Replica_SQL_Running | Replicate_Do_DB | Replicate_Ignore_DB | Replicate_Do_Table | Replicate_Ignore_Table | Replicate_Wild_Do_Table | Replicate_Wild_Ignore_Table | Last_Errno | Last_Error | Skip_Counter | Exec_Source_Log_Pos | Relay_Log_Space | Until_Condition | Until_Log_File | Until_Log_Pos | Source_SSL_Allowed | Source_SSL_CA_File | Source_SSL_CA_Path | Source_SSL_Cert | Source_SSL_Cipher | Source_SSL_Key | Seconds_Behind_Source | Source_SSL_Verify_Server_Cert | Last_IO_Errno | Last_IO_Error | Last_SQL_Errno | Last_SQL_Error | Replicate_Ignore_Server_Ids | Source_Server_Id | Source_UUID                          | Source_Info_File        | SQL_Delay | SQL_Remaining_Delay | Replica_SQL_Running_State                                | Source_Retry_Count | Source_Bind | Last_IO_Error_Timestamp | Last_SQL_Error_Timestamp | Source_SSL_Crl | Source_SSL_Crlpath | Retrieved_Gtid_Set | Executed_Gtid_Set                                                                   | Auto_Position | Replicate_Rewrite_DB | Channel_Name        | Source_TLS_Version | Source_public_key_path | Get_Source_public_key | Network_Namespace |
+----------------------------------+----------------------------------------------+------------------+-------------+---------------+-------------------+---------------------+--------------------------------------+---------------+-----------------------+--------------------+---------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+--------------------------------------+-------------------------+-----------+---------------------+----------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------------------------------------------------------------------------+---------------+----------------------+---------------------+--------------------+------------------------+-----------------------+-------------------+
| Waiting for source to send event | mds-tokyo.subnettokyo.vcntokyo.oraclevcn.com | replication_user |        3306 |            60 | binary-log.000035 |                 196 | relay-log-replication_channel.000002 |           373 | binary-log.000035     | Yes                | Yes                 |                 |                     |                    |                        |                         |                             |          0 |            |            0 |                 196 |             596 | None            |                |             0 | Yes                |                    |                    |                 |                   |                |                     0 | No                            |             0 |               |              0 |                |                             |       3963301291 | 24c28746-482f-11ec-8a77-020017004cd7 | mysql.slave_master_info |         0 |                NULL | Replica has read all relay log; waiting for more updates |                  0 |             |                         |                          |                |                    |                    | 24c28746-482f-11ec-8a77-020017004cd7:1-10,
f39636ce-4844-11ec-b929-0200170071d7:1-5 |             1 |                      | replication_channel | TLSv1.2,TLSv1.3    |                        |                     1 | mysql             |
+----------------------------------+----------------------------------------------+------------------+-------------+---------------+-------------------+---------------------+--------------------------------------+---------------+-----------------------+--------------------+---------------------+-----------------+---------------------+--------------------+------------------------+-------------------------+-----------------------------+------------+------------+--------------+---------------------+-----------------+-----------------+----------------+---------------+--------------------+--------------------+--------------------+-----------------+-------------------+----------------+-----------------------+-------------------------------+---------------+---------------+----------------+----------------+-----------------------------+------------------+--------------------------------------+-------------------------+-----------+---------------------+----------------------------------------------------------+--------------------+-------------+-------------------------+--------------------------+----------------+--------------------+--------------------+-------------------------------------------------------------------------------------+---------------+----------------------+---------------------+--------------------+------------------------+-----------------------+-------------------+
1 row in set (0.0090 sec)
 MySQL  mds-osaka.subnetosaka.vcnosaka testdb  SQL >
```

# まとめ
東京リージョンにあるMySQL DBシステムと大阪リージョンにあるMySQL DBシステムの間でレプリケーションを構成することができました。