本記事は Sandboxes in MySQL Shell の翻訳版です。

MySQL Shellは、MySQLインスタンスに接続し操作することが可能なコマンドライン・インターフェイス (CLI) です。本記事はMySQL Shellが提供するSandboxインスタンスの作成方法および管理コマンドについてご紹介します。

 

課題

MySQLの読み取りレプリカやInnoDB Cluster、InnoDB ClusterSetなどを試験するのに、手軽に検証用MySQLインスタンスを作りたい場合があるかと思います。従来通り他のシステムで新しいMySQLインスタンスを作成し起動するという方法もありますが、MySQL Shellを使えばより簡単に短時間で、且つ低コストでこれを実現することができます。

 

MySQL Shellが提供するソリューション

MySQL Shellではローカル環境で利用できる、MySQL Sandboxインスタンスを提供しています。Sandboxインスタンスを使えば、MySQL本番環境に展開する前にアーキテクチャの設定の確認や検証が、短時間かつ低コストで可能です。MySQL Sandboxインスタンスの作成は、MySQL Shellで複数のコマンドを実行するだけで簡単にできます。

 

Sandboxインスタンスの作成

Sandboxインスタンスを実行するには、起動したいバージョンのMySQLがローカル環境で稼働されている必要があります。

Sandboxインスタンスを作成するには、まずMySQL ShellをJavaScriptモードにし、次のコマンドを実行します。

dba.deploySandboxInstance(port number)

port numberの値は、Sandboxインスタンスを実行するポート番号を設定します。下記はSandboxインスタンスを3336で運用する場合の実行例です。

dba.deploySandboxInstance(3336)

実行すると、途中でrootユーザーのパスワード入力が求められます。Sandboxインスタンスが起動して実行されると、正常にデプロイされ起動したことを示すメッセージが表示されます。下記はメッセージの表示例です。

Messages from creating a sandbox instance

Sandboxインスタンスが作成されるディレクトリはデフォルトの場合、作成コマンドを実行したユーザーのホーム・ディレクトリ下のmysql-sandboxes/ポート番号というディレクトリです(実行例では、/home/opc/mysql-sandboxes/3336)。

 

Sandboxインスタンスに接続

新しく作成したSandboxインスタンスに接続するには、下記のコマンドを実行します。

\c root@localhost:3336

実行すると、rootユーザーのパスワードを求められるので、パスワードを入力しSandboxインスタンスに接続します。

Connecting to the new sandbox instance


オプションの設定

Sandboxインスタンスを作成するdeploySandBoxInstance()を呼び出す際に、オプションを指定できます。下記によく使用されるオプションの一部をご紹介します。

  • password – 新しいSandboxインスタンスのrootパスワード。
  • sandboxDir – Sandboxインスタンスを作成するディレクトリ・パス。
  • portx – Xプロトコルに使用するポート。デフォルトでは、指定されたポート番号の10倍が割り当てられます。

オプションについてさらに詳しい情報は、下記コマンドで表示できます。また公式Webマニュアルもご覧ください。

\? dba.deploySandboxInstance

 

Sandboxインスタンスの管理

Sandboxインスタンスを管理する際に良く使うコマンドをご紹介します。

 

Sandboxインスタンスの停止

dba.stopSandboxInstance(port number)によって、Sandboxインスタンスを正常に停止します。port numberの値は、Sandboxインスタンスが実行されているポート番号を入力して下さい。先述の実施例で作成したSandboxインスタンス(ポート番号: 3336)を停止するには、次のコマンドを実行します。

dba.stopSandboxInstance(3336)

停止する際に、rootパスワードが求められます。

 

Sandboxインスタンスの起動

dba.startSandboxInstance(port number)によって、既にデプロイ済みのSandboxインスタンスを起動します。port numberの値は、Sandboxインスタンスをデプロイしたポート番号です。先述の実施例で作成したSandboxインスタンスを起動するには、次のコマンドを実行します。

dba.startSandboxInstance(3336)

 

Sandboxインスタンスの強制終了

dba.killSandboxInstance(port number)によって、正常停止ではなく、コミット前クエリのロールバックを実施しSandboxインスタンスを強制終了します。このコマンドはSandboxインスタンスを検証環境として利用する際に、システムの予期しない停止を再現するのに便利です。port numberの値は、Sandboxインスタンスが実行されているポート番号を入力して下さい。先述の実施例で作成したSandboxインスタンスを強制終了するには、次のコマンドを実行します。

dba.killSandboxInstance(3336)

 

Sandboxインスタンスの削除

dba.deleteSandboxInstance(port number)によって、Sandboxインスタンスを削除します。port numberの値は、Sandboxインスタンスが実行されているポート番号を入力して下さい。削除コマンドを実行する前に、Sandboxインスタンスを停止または強制終了します。先述の実施例で作成したSandboxインスタンスを削除するには、次のコマンドを実行します。

dba.deleteSandboxInstance(3336)

 

まとめ

MySQL Sandboxインスタンスを利用することで、MySQLアーキテクチャの開発と展開のための検証環境をより簡単に、且つ時間を掛けずに作成することができます。またMySQL Shellは、Sandboxインスタンスを簡単に運用できるように管理コマンドを提供しています。MySQL Sandboxに関してさらに詳しい情報、およびSandboxインスタンスを利用したMySQL アーキテクチャの設定方法については、公式Webマニュアルをご覧ください。

またポッドキャストInside MySQL: Sakila Speaksにて、本記事の執筆者でありMySQL開発者のScott Strozと、同じくMySQL開発者のFrederic DescampsMiguel Araújoの三人がMySQL Shellの機能について語ってるエピソードがありますので、こちらも是非お聞き下さい。