OCI HeatWave MySQLを作成してみた

この記事では、Oracle Cloud Infrastructure(OCI)HeatWave MySQLを作成する方法を記載します。
# OCI HeatWave MySQLとは
MySQL Enterprise Editionをベースとしたクラウド版MySQLサーバーです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/fbe030df-4742-412b-a239-a36c5bb47d8e.png)

> OracleのMySQLチームが開発、管理およびサポートする、完全管理型のOracle Cloud Infrastructureネイティブ・サービスです。
Oracleにより、バックアップやリカバリ、データベースおよびオペレーティング・システムのパッチ適用などのタスクが自動化されます。ユーザーが責任を持つのは、データ、スキーマ設計およびアクセス・ポリシーの管理のみです。

[Oracle Cloud Infrastructureドキュメント](https://docs.oracle.com/ja-jp/iaas/mysql-database/doc/overview-mysql-heatwave-service.html)

**HeatWave MySQLのアーキテクチャ**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/55cce012-0508-4b07-b4f6-922f2c5ae0ec.png)

+ **MySQL Database Service**
通常のMySQLサーバーとして動作。InnoDBストレージエンジンを搭載しており、データの挿入・更新・削除などのOLTP処理や分析クエリの最適化を実行する。
+ **HeatWave Node**
別に構成された複数のノードで構成される分散インメモリ分析エンジン。
データはメモリ上に圧縮されて格納され、高速にOLAPクエリを処理。
+ **自動データ同期**
MySQL Database ServiceとHeatWaveノード間で、データは自動的に同期。ETLや手動コピーは不要。
+ **SQLインターフェースは共通**
アプリケーションやユーザーは通常の MySQLクライアントからSQLを使ってアクセスするだけ。HeatWaveの存在を意識せずに高速分析が可能。

# OCI Heatwave MySQLの作成
※前提として、OCIのサービスリミット([参考リンク](https://docs.oracle.com/ja-jp/iaas/Content/General/Concepts/servicelimits.htm#Requesti))を満たしていることの確認とVCN(Virtual Cloud Network)の作成([参考リンク](https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/))が必要になります。

OCIコンソールにアクセスし、ナビゲーションメニューを開き、**データベース**を選択し、**DBシステム**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/10561166-ac0c-400b-aac8-bba72d6ea69b.png)

## DBシステムの作成
DBシステム画面で**DBシステムの作成**をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/40336f14-f82b-4907-873a-3022df445785.png)

DBシステムの作成ページで、以下の設定を実施しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/bfcf91b5-2864-4423-a79e-69e6f7182abc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/1fd2e5f4-a008-46fb-94e9-6a5de5e11e47.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/e849c1ef-9a95-4bba-9985-ec714e161391.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/24ba3dc1-649e-45b6-af8d-36792f96de2d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/8e6e4fef-687c-4cbc-a758-d78af9faacdf.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/540b841a-5f33-4db3-9440-a8eac6da1a5b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/ba53a500-f8d3-4937-9f5f-bbc5e71b5b45.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/8a6a9d45-34dd-4290-91e5-965af65db3c4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/a0bac17b-9275-4fb6-b83f-b8e7245fbe84.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/3bd67561-c2e0-4176-9306-3db28a4ce4a1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/d787a6c9-f5ff-466e-9b74-f3880b408790.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/b5aa3d4e-fb5c-4462-91ad-a28855fe66ca.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/c0f373bd-a765-422e-bb37-43a7db2c980f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/bbda4d71-1b1e-4d1c-a088-a4d187e6c74a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/840b8aa3-32d3-4148-8a2d-c04fcac3c5a1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/df2ab4df-b212-424d-9403-472089299788.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/ae392d69-bded-432f-96cf-21bffba9ca07.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/61c24e7f-4152-4580-aae5-60cb8f9fa992.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/ac3d0199-858c-41b5-b7e7-4cc99383471d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/2f1b4e3e-633e-4f8a-b2f4-9f93b4362116.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/f5045d78-3d62-47e2-a96b-226bae672f68.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/0e5bab55-4d86-43d0-8427-a435ca72aa45.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/ac0bbeb8-78c4-459f-a9b5-2c8b64433d30.png)

作成完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2511285/c5c60ff9-3974-4a42-b859-c6a70f352cd9.png)

## OCI HeatWave MySQLへの接続
### OCIコンピュート・インスタンスの作成
+ 作成したHeatWave MySQLへ接続するには、別途でMySQLクライアントがインストールされたコンピュート・インスタンスを作成([参考リンク](https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance/))する必要があります。
+ コンピュート・インスタンスはHeatWave MySQLと同じVCN上のサブネットに配置します。
+ OCIコンピュート・インスタンスから以下のいずれかを使用することでHeatWave MySQLに接続できます。
    + MySQL Shell ([参考リンク](https://docs.oracle.com/en-us/iaas/mysql-database/doc/compute-instance.html#GUID-70023ABD-5418-4C1F-975F-F3E2ABC0F93E))
    + MySQL Client ([参考リンク](https://docs.oracle.com/en-us/iaas/mysql-database/doc/compute-instance.html#GUID-1AEF626B-F504-4F04-8721-65E4BC35FED7))
    + MySQL Workbench ([参考リンク](https://docs.oracle.com/en-us/iaas/mysql-database/doc/compute-instance.html#GUID-C507A054-3AA4-4E33-9060-1ABBEC5A4FCC))

今回は、MySQL Clientを使用するパターンを紹介します。

MySQL Clientをインストールする:
```
sudo yum install mysql
```

### MySQL ClientからOCI HeatWave MySQLへの接続

HeatWave MySQL(DBシステム)に接続する:
```
mysql -h 10.0.0.166 -u admin -p
```
```shell:実行結果
[opc@mysqltarsrv ~]$ mysql -h 10.0.0.166 -u admin -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15448
Server version: 8.4.3-u10-cloud MySQL Enterprise - Cloud

Copyright (c) 2000, 2024, 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>
```

以上