OCIでのMySQL HeatWaveへの接続と管理

MySQL HeatWaveの優れた点の1つは、既存のトランザクション・データに対して分析を直接実行できることです。そのため、大規模な並列分析を実行する必要がある場合、そのデータを別のシステムにシャッフルする必要はありません。それは驚くほど簡単だ。

MySQL HeatWaveはフルマネージド・サービスであり、どのデータベースと同様に、パブリック・インターネットからも保護されている場合に最適です。引き続き何らかの形で接続してデータを操作する必要があるため、OCI Cloud Shell (スタート・ガイドで簡単に説明します)、DIY Bastionホスト、およびOCI Bastionサービス(Bastionの詳細を参照)をセキュアなトンネルとして使用してMySQL Workbenchと接続します。

まだMySQL HeatWaveシステムを起動して実行していない場合は、OCI上のMySQL HeatWaveスタート・ガイドに進んでください。すべてを設定したら、ここを読んで、様々な接続オプション、データ・ロード技術およびクラスタ管理機能を確認してください。

前提条件

  • OCIアカウント(トライアルまたは有料)
  • MySQLシェルの経験
  • MySQL HeatWave DB System
  • テキストエディタ

オプションのクイック・レビュー

コマンドライン・インタフェースを好むユーザーには、Cloud Shellまたは自己管理型の要塞ホストを介して接続することを選択できます。このホストでは、お気に入りのLinuxを使用することができます。GUIを好むユーザーには、「Secure Tunnel」セクションに進むことができます。しかし、first...aはいくつかの準備ステップ!

さらに進む前に、必要なエンドポイントの詳細をDB Systemから収集したことを確認してください。「データベース」→「DBシステム」にナビゲートして取得できるプライベートIPアドレスとMySQLポートが必要になります。このポートでは、前に作成したMySQLデータベースの名前をクリックします。

クラウド・シェルのスクリーンショット

次に、(要塞またはセキュアなトンネルのいずれを使用するかに関係なく)様々な中間システムへのセキュアな接続のためにSSHキーが必要になります。OCIコンソールで利用可能なCloud Shellを使用して、SSH鍵を作成します。(注意: Cloud Shellからデータベースに接続することもできます...すぐに利用できるようになります)

クラウド・シェルのアイコンのスクリーンショット

クラウド・シェルは、Bashシェルを実行する小さなVMのようなもので、機能がロードされています。実際、MySQLおよびMySQLシェルは、様々なOCIツールとともにすでにインストールされています。そのため、起動には1分かかりますが、起動すると、ブラウザのCLI内で多くのことができるようになります。

シェルが起動したら、次を使用してSSH鍵を作成します。

ssh-keygen -b 2048 -t rsa

Enterを押したまま(デフォルトのファイル名を受け入れ、パスワードなしで続行するため)、すぐに公開鍵(~/.ssh/id_rsa.pub)と非公開鍵(~/.ssh/id_rsa)のSSH鍵を使用できます。

では、cd ~/.sshとls -alを見てみましょう。

クラウド・シェル・コンソールのスクリーンショット

クラウド・シェルでSSHキーを初めて作成した場合は、2つのファイルのみが表示されます。秘密鍵を安全に保管し、共有しないでください。公開鍵は、特定のアクティビティに必要であり、一部のシステムにアップロードしたり、コピーして貼り付けたりして、クラウドでのセキュアな通信を容易にすることができます。

クラウド・シェルを終了する前に、公開キーを取得する必要があります。ノートパッドなどのテキスト・エディタを開き、まだCloud Shellにいる場合は、id_rsa.pubコンテンツにcat ~/.ssh/id_rsa.pubを使用してノートパッドをコピーし、そのテキストのBLOB (自分のキー)を選択して、選択したテキスト・エディタに貼り付けます。まずはssh-rsaから。Cloud Shellの右上隅にあるスプロケットをクリックして、「ダウンロード」を選択することもできます。公開キーへのパスを入力します。

クラウド・シェルのダウンロードのスクリーンショット

公開鍵は、ダウンロードしたファイル用にOSによって指定されたフォルダに配置されます。.ssh/id_rsa (秘密キー)についても同じ操作を行い、安全な場所に格納します。MacまたはLinuxでは、秘密キー・ファイルをchmod 400にしてください。

OCIクラウド・シェル

すでにCloud Shellに入っているので、クイック・リフレッシュでここから始めましょう。ツールはすでにインストールされているため、MySQLクライアントまたはシェルで接続できます。この例では、MySQLシェルを使用します。

まず、Cloud Shellのネットワーク設定をprivateに変更する必要があります。

クラウド・シェル・ネットワーク設定のスクリーンショット

プロンプトが表示されたら、MySQLインスタンスをデプロイしたVCNおよびサブネットを選択し、[このネットワークに接続します]。

ノート: この機能はホーム・リージョンに存在します。MySQLをそこにデプロイしていない場合は、プロンプトの手順に従ってリモートVCNピアリングを確立できます。

データベースにログインする時間:

mysqlsh -uadmin -p -h 10.0.1.... --sql

プロンプトが表示されたら、DBシステムの作成時に指定したパスワードを入力します。

データベースの作成時にサンプル・データをロードした場合は、クイック問合せを実行してDBの内容を検証できます。

SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';

DIY Bastionホスト

時間を計算!「Compute」→「Instances」に移動します。以前と同じコンパートメントにとどまり、「インスタンスの作成」をクリックします。名前を付け、選択した可用性ドメインとシェイプを保持します。お気に入りのLinuxフレーバのイメージを選択します。この例では、Oracle Linux 8を使用しています。

ここでの重要な部分は、前に設定したVCNを使用することです。作成されたパブリック・サブネットを選択し、「パブリックIPアドレスの割当て」が「はい」に設定されていることを確認します。

「SSHキーの追加」セクションで、ノートパッドから公開キーを貼り付けます。

「Create」をクリックして起動します。もちろん数分かかります。

緑色になり、実行されると、インスタンス・ページには「インスタンス・アクセス」の下のパブリックIPアドレスとプライベートIPが表示されます。

パブリックIPをコピーして保存します。

次に、要塞ホストからMySQL DB Systemに接続します。

これで、コンピュート・インスタンスのパブリックIP、秘密SSHキーおよびDB SystemのプライベートIPが保たれました。最初の2つをまとめてSSH経由で接続します。秘密キーの場所を指し、ユーザー名はopcになります。

たとえば(Mac OSまたはLinux端末、WindowsではPowerShell):

ssh -i ~/.ssh/id_rsa opc@

次を使用してMySQLシェルをインストールしましょう(そして、すべてのプロンプトに対してyに回答し続けます)。

sudo yum install mysql-shell -y

エンドポイントは、以前にメモ帳にコピーしたプライベートIPになります。もちろん、以前に起動したデータベースのパスワードも必要です。

例:

mysqlsh -uadmin -p -h 10.0.1.... --sql

プロンプトが表示されたら、DBシステムの作成時に指定したパスワードを入力します。

データベースの作成時にサンプル・データをロードした場合は、クイック問合せを実行してDBの内容を検証できます。

SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'airportdb';

OCI管理要塞

OCI Bastionサービスを使用すると、Virtual Cloud Network内のプライベート・リソースへのセキュアな一時接続を簡単に作成できます。MySQLは完全管理型のDBシステムであるため、OSに接続できません。かわりに、Bastionサービスを介してセキュアなトンネルを作成し、MySQL Workbenchを使用して接続します。

開始するには、OCIコンソールで「セキュリティ」→「要塞」に移動します。要塞インスタンスを作成します。これは、基本的に特定のセッション構成のコンテナです。

次に、セッションを作成します。タイプはSSHポート転送セッションです。DBポート(デフォルトでは3306)とともに、MySQLインスタンスのプライベートIPアドレスを入力する必要があります。この演習では、以前に生成したSSHキー・ペアを使用できます。現実世界では、おそらく異なるキーペアを生成する必要があります。

[Create session]をクリックします。

セッションが正常に作成されたら、右側の3ドット・メニューをクリックしてSSHコマンドを表示できます。コマンドをテキスト・エディタにコピーし、を、以前に作成/ダウンロードしたキーへのフルパスに置き換えます。を、接続元のマシン上のローカル・ポートに置き換えます。使用可能な任意のポートを使用できます。

MacまたはLinuxの場合は、端末ウィンドウを開いてコマンドを実行できます。Windowsでは、PowerShellを使用します。接続を続行するように求められた場合は、「yes」と入力してEnterキーを押します。

次に、データベース・クライアント(MySQL Workbench)を開き、接続を構成します。

  • ホスト名: 127.0.0.1
  • ポート: 3306
  • ユーザー名: admin (私の場合は)
  • パスワード: [Vaultに保存...]

[Test Connection]をクリックします。すべてがうまくいけば、次のことがわかります。

mysqlワークベンチのスクリーンショット- 接続に成功しました

設定を保存し、接続を開きます。現在は、既存のデータを処理したり、新しいデータをロードしたりできます。

HeatWaveクラスタへのデータのロード

この時点で、InnoDBからHeatWaveにデータをロードする準備が整ったため、一歩先を行くことができます。

データ・ロードを開始できるように、MySQLシェルに戻りましょう。

コマンドラインで:

mysqlsh -uadmin -p -h 10.0.1... --sql

データベース・パスワードを入力します。

HeatWaveにairportdb表をロードするには、「自動パラレル・ロード」コマンドを使用します。

CALL sys.heatwave_load(JSON_ARRAY('airportdb'), NULL);

HeatWaveクラスタに表がロードされていることを確認するだけです。ロードされた表のロード・ステータスはAVAIL_RPDGSTABSTATEです。

再度、MySQLシェルで:

USE performance_schema;

デフォルト・スキーマがperformance_schemaに設定されていることがわかります。

SELECT NAME, LOAD_STATUS FROM rpd_tables,rpd_table_id WHERE rpd_tables.ID = rpd_table_id.ID;

もちろん、ここから問合せを実行し、必要なすべてのデータベース機能を実行できます。HeatWaveのオンとオフを切り替えて、問合せ時間を比較し、HeatWaveをオンにして実行した速度を確認することもできます。

HeatWaveがオンかどうかを確認するには、次のコマンドを使用します。

SHOW VARIABLES LIKE 'use_secondary_engine%';

オフにするには、次を使用します。

SET SESSION use_secondary_engine=OFF;

再度オンにするには、次を使用します。

SET SESSION use_secondary_engine=ON;

HeatWaveクラスタから表をアンロードする必要がある場合は、次のように表を変更します。

ALTER TABLE flightschedule SECONDARY_UNLOAD;

HeatWaveクラスタの管理

HeatWaveクラスタの作成後も、ノード数を調整できます。これを行うには、DBシステムのHeatWaveメニュー項目を使用してクラスタを編集します。クラスタはオンラインでサイズ変更され、操作中に停止時間は発生せず、サイズ変更後にデータが自動的にリバランスされます。

また、分析するデータ量に必要なノード数を見積もるオプションもあります。見積りの生成には数分かかることがありますが、クラスタの適切なサイズ設定から推測作業を外すのに役立ちます。エスティメータによって構成の変更が提示された場合は、すぐに適用できます。

いつでも、HeatWaveクラスタを停止するか(請求も停止するため)、再起動してクラスタを更新するかを選択できます。HeatWaveクラスタが停止または再起動アクションによって停止されると、HeatWaveクラスタ・メモリーにロードされたデータは失われます。クラスタを起動または再起動すると、以前にロードされたデータは自動的に再ロードされます。HeatWaveの停止中にDB内で発生したデータ変更は、リロードされたデータに含まれます。

HeatWaveクラスタの削除

HeatWaveクラスタを削除すると、HeatWaveクラスタ・ノードが完全に削除されます。HeatWaveクラスタがアタッチされているDB Systemは影響を受けません。削除後、クラスタを最初から再度設定する必要があることに注意してください。これは、データをHeatWaveに再ロードすることを意味します。

まとめ

これで、OCI上のMySQL HeatWaveの接続戦略と管理機能のカソリー・レビューが終了しました。様々なチャネルを介してDB Systemを接続する方法、HeatWaveでデータをロード/アンロードする方法、およびセカンダリ・エンジンのオン/オフを切り替える方法を学習しました。ここから、いくつかのクエリを実行したり、独自のデータをロードしたりして、HeatWaveの速度を確認することができます。

MySQL HeatWaveの詳細は、こちらのドキュメントをお読みください。

さらに知りたいですか?公開Slackチャネルのディスカッションにご参加ください。