[Oracle Cloud] MySQL Database Service の Getting Started をやってみた

# はじめに

Oracle Cloud Infrastructure(以下OCI) の Tokyo Region で、MySQL マネージドサービスの MySQL Database Service が最近使えるようになりました。Oracle の MySQL チームによって、開発・管理・サポートされている MySQL のマネージドサービスです。自動構成・自動バックアップ・自動メンテナンスなど、Oracle 側でマネージドされており、作成や保守作業などを Cloud 側にお任せ出来ます。

OCI の Document に、MySQL Database Service の Getting Start が公開されています。今回の記事は、この Getting Start に沿った各手順を丁寧に紹介していきます。

https://docs.cloud.oracle.com/en-us/iaas/mysql-database/doc/getting-started.html



やること

- MySQL Database Service を作成
- CentOS7 を MySQL のアクセス元として構築
- MySQL Shell と、MySQL Client から MySQL Database Service に接続



# 事前準備 : Network 作成

MySQL Database Service は、仮想ネットワーク内の Subnet に構成するため、ファイアウォールの Security List に、3306 のポートを開けておきます。

![1601085184769.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/849bdacf-de5b-bb21-a737-4a490728d213.png)



# MySQL Database Service を作成

MySQL のメニューから、DB Systems を選択します。

![1601068769589.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/fd89dd33-70dc-77e1-b500-6cc2fb6fa1f9.png)



Create MySQL DB System を選択します。

![1601068809164.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/54eb1a05-00f3-c8c5-a255-08c9870b60f1.png)



各種パラメータを指定します。いくつかのパラメータを紹介します。

- Shape : CPU や メモリなどのリソースを選択します。2020.9月時点では、次の4個から選択可能です。環境によっては、Service Limit の上限に引っかかる場合があります。[こちらのDocument](https://docs.cloud.oracle.com/en-us/iaas/Content/General/Concepts/servicelimits.htm)に、上限緩和の申請方法が書いています。
 - VM.Standard.E2.1 : 1 OCPU (2 vCPU), 8 GBメモリ
 - VM.Standard.E2.2 : 2 OCPU (4 vCPU), 16 GBメモリ 
 - VM.Standard.E2.4 :  4 OCPU (8 vCPU), 32 GBメモリ
 - VM.Standard.E2.8 :  8 OCPU (16 vCPU), 64 GBメモリ
- Configuration Options : MySQL DB システムを操作する変数のまとまりを選択します。Configuration を Custom することで、Connection の上限などのパラメータを指定可能です。

![1601068948285.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/501f5909-1134-21a7-3bd4-6a016d6fda07.png)





各種パラメータを指定します。ユーザー名、パスワード、構成するネットワークなどを指定します。

![1601069128892.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/4e17059e-49a4-cfd5-861c-cc17d5268baf.png)



自動バックアップの有無や、保存期間を指定して、Create を押します。

![1601069282936.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/c2f6e1aa-f3fc-76e1-f230-a89df2aaa137.png)



Creating となります。自分の環境では、約13分ほどで Active に切り替わりました。

![1601069311755.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/734fba67-714d-1811-79d5-96dbdfc582e4.png)



Active となっています。各種詳細な情報が見えます。

![1601070107246.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/dd7190fc-6432-c56b-dd4e-7a44b6887436.png)



Endpoint の欄です。VCN 内で使える名前解決や、それに紐づく IP アドレス、ポートがが確認可能です。

![1601070219179.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1c498c05-33a7-020d-942b-b47f1685cfb4.png)



Backup の欄です。自動バックアップの結果や、手動バックアップの実行、バックアップから新たな MySQL へリストアが出来ます。

![1601070244277.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/786e48d2-e7bc-da9b-2e0a-ccefefb4fdb0.png)



# 接続確認 MySQL Shell

MySQL Database Service の作成が出来たので、早速、同一 VCN の CentOS 7 からアクセス確認をしてみましょう。まず、CentOS 7 に、MySQL Shell をインストールしていきますが、そのまえに、現在の CentOS 7 が参照しているリポジトリの一覧を確認しておきます。

```
[opc@test001 ~]$ sudo yum repolist
Loaded plugins: langpacks, ulninfo
repo id                                repo name                                                                               status
ol7_UEKR5/x86_64                       Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Server (x86_64)          280
ol7_addons/x86_64                      Oracle Linux 7Server Add ons (x86_64)                                                     467
ol7_developer/x86_64                   Oracle Linux 7Server Development Packages (x86_64)                                       1505
ol7_developer_EPEL/x86_64              Oracle Linux 7Server EPEL Packages for Development (x86_64)                             33110
ol7_ksplice                            Ksplice for Oracle Linux 7Server (x86_64)                                                8574
ol7_latest/x86_64                      Oracle Linux 7Server Latest (x86_64)                                                    19428
ol7_oci_included/x86_64                Oracle Software for OCI users on Oracle Linux 7Server (x86_64)                            533
ol7_optional_latest/x86_64             Oracle Linux 7Server Optional Latest (x86_64)                                           14174
ol7_software_collections/x86_64        Software Collection Library release 3.0 packages for Oracle Linux 7 (x86_64)            15333
repolist: 93404
[opc@test001 ~]$
```



リポジトルを構成しているファイルも確認しておきます。

```
[opc@test001 ~]$ ls -la /etc/yum.repos.d/
total 52
drwxr-xr-x.  2 root root 4096 Aug 25 01:52 .
drwxr-xr-x. 95 root root 8192 Sep 26 01:38 ..
-rw-r--r--.  1 root root  488 Jun 11 21:19 ksplice-ol7.repo
-rw-r--r--.  1 root root  205 Sep 25 19:43 ksplice-uptrack.repo
-rw-r--r--.  1 root root  252 Jun 11 21:22 oci-included-ol7.repo
-rw-r--r--.  1 root root  252 Jun 11 21:19 oracle-epel-ol7.repo
-rw-r--r--.  1 root root 4082 Aug 25 01:47 oracle-linux-ol7.repo
-rw-r--r--.  1 root root  276 Jun 11 21:25 oracle-softwarecollection-ol7.repo
-rw-r--r--.  1 root root 1039 Dec 13  2019 oraclelinux-developer-ol7.repo
-rw-r--r--.  1 root root 2587 Jul  8 21:25 uek-ol7.repo
-rw-r--r--.  1 root root  226 Jul  8 21:25 virt-ol7.repo
[opc@test001 ~]$
```



一般的に公開している MySQL の Repository を参照するために、RPM ファイルをインストールします。

```
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
```



3個のRepositoryが追加されています

```
[opc@test001 ~]$ sudo yum repolist
Loaded plugins: langpacks, ulninfo
repo id                                 repo name                                                                              status
mysql-connectors-community/x86_64       MySQL Connectors Community                                                               165
mysql-tools-community/x86_64            MySQL Tools Community                                                                    115
mysql80-community/x86_64                MySQL 8.0 Community Server                                                               193
ol7_UEKR5/x86_64                        Latest Unbreakable Enterprise Kernel Release 5 for Oracle Linux 7Server (x86_64)         280
ol7_addons/x86_64                       Oracle Linux 7Server Add ons (x86_64)                                                    467
ol7_developer/x86_64                    Oracle Linux 7Server Development Packages (x86_64)                                      1505
ol7_developer_EPEL/x86_64               Oracle Linux 7Server EPEL Packages for Development (x86_64)                            33110
ol7_ksplice                             Ksplice for Oracle Linux 7Server (x86_64)                                               8574
ol7_latest/x86_64                       Oracle Linux 7Server Latest (x86_64)                                                   19428
ol7_oci_included/x86_64                 Oracle Software for OCI users on Oracle Linux 7Server (x86_64)                           533
ol7_optional_latest/x86_64              Oracle Linux 7Server Optional Latest (x86_64)                                          14174
ol7_software_collections/x86_64         Software Collection Library release 3.0 packages for Oracle Linux 7 (x86_64)           15333
repolist: 93877
[opc@test001 ~]$
```



実際のファイルをみると、`mysql-community-source.repo` と `mysql-community.repo` が追加されています。

```
[opc@test001 ~]$ ls -la /etc/yum.repos.d/
total 60
drwxr-xr-x.  2 root root 4096 Sep 26 01:40 .
drwxr-xr-x. 94 root root 8192 Sep 26 02:50 ..
-rw-r--r--.  1 root root  488 Jun 11 21:19 ksplice-ol7.repo
-rw-r--r--.  1 root root  205 Sep 25 19:43 ksplice-uptrack.repo
-rw-r--r--.  1 root root 2108 Apr 24  2019 mysql-community-source.repo
-rw-r--r--.  1 root root 2076 Apr 24  2019 mysql-community.repo
-rw-r--r--.  1 root root  252 Jun 11 21:22 oci-included-ol7.repo
-rw-r--r--.  1 root root  252 Jun 11 21:19 oracle-epel-ol7.repo
-rw-r--r--.  1 root root 4082 Aug 25 01:47 oracle-linux-ol7.repo
-rw-r--r--.  1 root root  276 Jun 11 21:25 oracle-softwarecollection-ol7.repo
-rw-r--r--.  1 root root 1039 Dec 13  2019 oraclelinux-developer-ol7.repo
-rw-r--r--.  1 root root 2587 Jul  8 21:25 uek-ol7.repo
-rw-r--r--.  1 root root  226 Jul  8 21:25 virt-ol7.repo
[opc@test001 ~]$
```



リポジトリが正常に構成できたので、MySQL Shell をインストールします

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



依存関係は特にありません

```
=====================================================================================================================================
 Package                       Arch                     Version                        Repository                               Size
=====================================================================================================================================
Installing:
 mysql-shell                   x86_64                   8.0.21-1.el7                   mysql-tools-community                    31 M

Transaction Summary
=====================================================================================================================================
```



インストールしたので、mysqlsh コマンドが実行できるようになっています

```
[opc@test001 ~]$ which mysqlsh
/usr/bin/mysqlsh
```



MySQL Database Service へ接続していきましょう。接続に使う書式です。

```
mysqlsh Username@IPAddressOfMySQLDBSystemEndpoint 
```



Endpoint を見ましょう。VCN 内部の名前解決が `sugimysql` で出来ることが分かります。

![1601084912925.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1178c5fc-d0bd-4cc6-8044-eb68a6404e98.png)



接続します。MySQL Database Service を作成した時に指定したユーザー名と、Endpoint の名前を入れます。(FQDNを入れても大丈夫です。)

```
mysqlsh admin@sugimysql 
```



パスワードを入力します。MySQL Database Service を作成した時に指定しました。

```
[opc@test001 ~]$ mysqlsh admin@sugimysql
Please provide the password for 'admin@sugimysql': ***********************
```



接続完了です

```
[opc@test001 ~]$ mysqlsh admin@sugimysql
Please provide the password for 'admin@sugimysql': ***********************
MySQL Shell 8.0.21

Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
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@sugimysql'
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 9
Server version: 8.0.21-u1-cloud MySQL Enterprise - Cloud
No default schema selected; type \use <schema> to set one.
 MySQL  sugimysql:3306 ssl  JS >

```



動作確認のために、status コマンドを表示してみます。`8.0.21-u1-cloud MySQL Enterprise - Cloud` と表示されており、OCI で動いてそうだ、ということがわかります。

```
 MySQL  sugimysql:3306 ssl  JS > \status
MySQL Shell version 8.0.21

Connection Id:                9
Current schema:
Current user:                 admin@test001.publicsubnet01.testuser001.oraclevcn.com
SSL:                          Cipher in use: ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2
Using delimiter:              ;
Server version:               8.0.21-u1-cloud MySQL Enterprise - Cloud
Protocol version:             Classic 10
Client library:               8.0.21
Connection:                   sugimysql via TCP/IP
TCP port:                     3306
Server characterset:          utf8mb4
Schema characterset:          utf8mb4
Client characterset:          utf8mb4
Conn. characterset:           utf8mb4
Result characterset:          utf8mb4
Compression:                  Disabled
Uptime:                       4 hours 51 min 32.0000 sec

Threads: 3  Questions: 11079  Slow queries: 0  Opens: 164  Flush tables: 3  Open tables: 85  Queries per second avg: 0.633
 MySQL  sugimysql:3306 ssl  JS >

```



# 接続確認 MySQL Client

では次に、なじみ深い MySQL Client から接続確認を行います。まず、インストールします。

```
sudo yum install mysql
```



依存関係です。

```
=====================================================================================================================================
 Package                                    Arch                  Version                     Repository                        Size
=====================================================================================================================================
Installing:
 mysql-community-client                     x86_64                8.0.21-1.el7                mysql80-community                 48 M
 mysql-community-libs                       x86_64                8.0.21-1.el7                mysql80-community                4.5 M
     replacing  mariadb-libs.x86_64 1:5.5.65-1.el7
 mysql-community-libs-compat                x86_64                8.0.21-1.el7                mysql80-community                1.2 M
     replacing  mariadb-libs.x86_64 1:5.5.65-1.el7
Installing for dependencies:
 mysql-community-common                     x86_64                8.0.21-1.el7                mysql80-community                617 k

Transaction Summary
=====================================================================================================================================
```



接続します

```
mysql --host sugimysql -u admin -p 
```



実行例

```
[opc@test001 ~]$ mysql --host sugimysql -u admin -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.21-u1-cloud MySQL Enterprise - Cloud

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

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>
```



show databases で実行確認です。

```
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql>
```



これで、正常に接続できることがわかりました。



# 参考URL

https://docs.cloud.oracle.com/en-us/iaas/mysql-database/doc/getting-started.html