はじめに
-
Oracle Database Service for Azure(ODSA)でMySQL HeatWaveを作成する方法については以下の記事を参考にしてください。
Oracle Database Service for Azure(ODSA)でOCI上にMySQL HeatWaveを作ってみる -
MySQL HeatWaveエンドポイントには、MySQL Shell、MySQLクライアント、MySQL Workbenchやアプリケーションから接続できます。この記事ではAzure上に作成したVMからMySQL Shellを利用してMySQL HeatWaveに接続する方法をご紹介します。
-
MySQL Shellについての詳細は以下を参考にしてください。
MySQL Shellを使ってもっと楽をしよう!(YouTube)
作業の流れ
以下の流れで行います。
- Azure上にVMインスタンスを作成する
- 作成したVMにMySQL Shellをインストールする
- MySQL HeatWaveに接続する
- MySQL HeatWaveにサンプルデータをインポートする
1. Azure上にVMインスタンスを作成する
Azureポータルから「Virtual Machines」をMySQL HeatWaveと同じVNET上に作成します。
ここではVMを作成する手順についてはご紹介しませんが、必要に応じて以下を参考にしていただければと思います。
Azure での仮想マシン(ドキュメント)
VMのイメージはMySQLがサポートしているプラットフォームを選択してください。
ODSAではMySQL HeatWaveにアクセスするためのデフォルト・ポート(22,3306,33060)がオープンされているため、別途ポートを開ける必要はありません。
2. 作成したVMにMySQL Shellをインストールする
作成したVM上で以下のコマンドを実行し、yumリポジトリのセットアップ、MySQL Shellのインストールを行います。
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm
sudo yum install mysql-shell
本記事ではOracle Linux8.5のVMにインストールを行っています。
利用するプラットフォームに応じて、インストール方法が変わる場合があります。インストール方法の詳細については以下を参照ください。
MySQL Shell のインストール
3. MySQL HeatWaveに接続する
以下のコマンドを実行し、インストールしたMySQL Shellを利用してMySQL HeatWaveに接続します。
mysqlsh --mysqlx -u <ユーザー名> -h <エンドポイント>
エンドポイントにはプライベートIPアドレス、またはFQDNを指定します。
以下の実行例では、MySQL HeatWaveに接続し「\sql」コマンドでSQL実行モードに変更後、SQLで現在のスキーマ一覧を確認しています。
MySQL ShellはJava Script(JS)モード、SQLモード、Python(PY)モードでMySQLに対する操作を行うことができるクライアントツールです。
4. MySQL HeatWaveにサンプルデータをインポートする
現在ユーザーのデータは投入していない状態なので、サンプルデータとして約2GBの「airportdb」データベースを投入してみます。
以下のいずれかのコマンドを実行し、ロードする圧縮ファイル(約640MB)をダウンロード・解凍します。
wget https://downloads.mysql.com/docs/airport-db.tar.gz
tar xvzf airport-db.tar.gz
wget https://downloads.mysql.com/docs/airport-db.zip
unzip airport-db.zip
解凍すると「airport-db」というフォルダが展開されますので、以下のようにMySQL ShellのloadDumpユーティリティを実行してデータをロードします。
util.loadDump("airport-db", {threads: 16, deferTableIndexes: "all", ignoreVersion: true})
以下、実行例になります。(FQDNを指定してMySQL HeatWaveに接続しています)
最後に、heatwave_load(ストアドプロシージャ)を実行し、「airportdb」スキーマをHeatWaveクラスタに展開します。
CALL sys.heatwave_load(JSON_ARRAY('airportdb'), NULL);
以上でMySQL HeatWave接続〜データのロードまで完了しました!