スマートスタイル TECH BLOG

データベース&クラウド技術情報

MySQL Sandbox の使用方法

MySQL Sandbox の使用方法

オフィシャル

MySQL::Sandbox
CPAN

MySQL Sandboxについて

MySQL Sandboxとは、検証用MySQL環境を容易に構築することを目的としたPerl製の
ツールです。
単一インスタンス・マスタースレーブ構成・双方向レプリケーションなどが1コマンドで
作成できます。
さらに、作成した環境を利用・管理するためのツール群も用意されています。

MySQL Sandboxのインストール

今回検証を行った環境はCentOS 7.3です。

まずはMySQL::Sandboxが必要とするパッケージをインストールします。

今回はcpanmを利用し、CPANからインストールします。

Sandboxの作成

まずは、Sandboxを作成するためのベースとなるMySQLのバイナリを入手します。
MySQL::Sandboxでは、rpmやdebパッケージは使用できません。
MySQLダウンロードサイトから「Linux – Generic」版のtar.gzファイルを入手します。

Sandboxの作成方法はいくつかあり、最も単純な方法はmake_sandboxコマンドで
tar.gzのファイルを指定することです。
指定したtar.gzファイルを解凍、設定を表示し確認のプロンプトが表示されます。
Yを押して次に進むと作成され、起動した状態になります。

解凍先は、特に指定がない場合tar.gzのファイルと同じディレクトリですが、
make_sandboxがデフォルトで探索してくれるディレクトリであるSANDBOX_BINARY
配下(デフォルトは$HOME/opt/mysql)に解凍したほうが楽です。

そのため、$HOME/opt/mysqlを作成し、make_sandboxには–export_binaries
オプションをつけています。
–export_binariesはSANDBOX_BINARY配下に解凍するためのオプションです。

MySQL::Sandboxは検証用途ですので、一般ユーザーでの使用が想定されており、
rootユーザーで操作をすると以下のメッセージが表示されます。

rootユーザーで利用したい場合は環境変数SANDBOX_AS_ROOTに0以外を指定します。

tar.gzのファイルを一度解凍すれば、MySQLのバージョンのディレクトリが作成
されていますので、以降は解凍されたディレクトリ名を指定してSandboxの作成が
可能になります。

また、より細かい指定をしたいという場合、make_sandboxが内部的に呼び出して
いるlow_level_make_sandboxのオプションも使用可能です
(low_level_make_sandbox –helpで確認できます)。

Sandboxを作成すると、SANDBOX_HOME(デフォルトでは$HOME/sandboxes)の配下に
msb_MAJER-VERSION_MINOR-VERSION_REVISION
というディレクトリが作成されます。
ここにMySQL::Sandboxのツール、MySQLのデータディレクトリ、各種設定ファイル
などが配置されます。

なお、MariaDBやPerconaServerも同様の手順で構築が可能です。

起動・停止

基本的にはSandboxのディレクトリ以下のツールを使用します。
stop/start/status/restartなどがあります。

接続

前項と同様に、Sandboxのディレクトリ以下のツールを使用します。
useは、mysqlクライアントのラッパーです。

useコマンドには、通常のmysqlコマンドのようにオプションを渡すことができます。

デフォルトの接続ユーザーはmsandboxです。
msandbox@localhostユーザーにはALL権限が与えられていますが、 WITH GRANT
OPTIONは与えられていないため、権限周りの操作はroot@localhostユーザーで
行います。
msandboxユーザー、rootユーザーのパスワードはともにmsandboxなので、useコマ
ンドにユーザーを指定するだけでログイン可能です。

これまでに説明したツールを使うことで基本的な操作は可能ですが、複数環境を
作成すると、毎回ディレクトリパスを指定してツールを起動するのは大変です。
msbというツールにより、接続や起動をより簡易に行えます。
引数にはSandbox名、もしくは短縮バージョン名を指定します。

msbは、もし接続先のインスタンスが停止していた場合、起動してから接続します。
useコマンドと同様に、通常のMySQLオプションを渡すことが可能です。

なお、SANDBOX_HOME/<各sandbox名>ディレクトリにもmsbというツールがあります
が、前述のmsbと内容は異なり、stop/start/statusなどのツールのラッパーと
なっています。

Sandboxの削除

必要なくなったSandboxはsbtoolにより削除します。
sbtoolは主にSandbox自体の管理操作を行うためのツールです。

MySQL 複数インスタンスの作成

MySQL Sandboxではマルチインスタンス構成を1コマンドで作成できます。
レプリケーション構成である必要がなければ、make_multiple_sandbox(もしくは
make_multiple_custom_sandbox)
レプリケーション構成が必要ならmake_replication_sandboxを使用します。

デフォルトでは、マスターとスレーブ2台の構成です。

スレーブの数を変更したい場合–how_many_slavesというオプションにより指定できます。

双方向レプリケーション、環状レプリケーションは以下のように作成します。

接続は単一インスタンスの場合と同様にuse、もしくはmsbを使います。
短縮バージョン名指定の場合、1文字目がrになります。
引数を渡さないとマスターに、引数に番号を渡すと各スレーブに接続されます。

マルチインスタンス構成の場合、ディレクトリの構成が異なります。

新たにデータディレクトリが3つ(master/node1/node2)作成されています。
useコマンドがありませんが、代わりにm、n1、n2、n3というコマンドを使用します。

mはマスターへ接続。n1は1番目のノード(=マスター)、n2,n3はスレーブへの接続と
なります。
msbでは引数なしがマスター、1がスレーブの1番目となっていたため、混乱しない
ようにしてください。

xxx_allのコマンドは、このSandbox内の全インスタンスに処理を行うツールです。
ちなみに、Sandbox配下にもxxx_allツールは用意されており、全Sandbox、全イン
スタンスへ処理を行うことが可能です。

以上がMySQL Sandboxの簡易的な使用方法になります。
検証環境の作成方法も様々ありますが、非常に手軽に検証環境を作成できるツール
であると感じました。
検証をしたいためにMySQLを構築しようとしてそれ自体にハマったなどという事態
を避けるためにも導入を検討してみてはいかがでしょうか。


MySQL

 

Return Top