まめ畑

ゆるゆると書いていきます

MySQL Sandboxを使ってみる

MySQLを使用したテスト環境を構築する時に便利なMySQL Sandboxを使ってみました。
1台のノードに複数のバージョンのMySQLをインストールしたりする際は、MySQLサーバの共存の設定やポート番号などを設定したりと何かと面倒でしたが、Sandboxを使用することで簡単に解決することが出来ます
また、簡単にレプリケーション環境を構築出来るほか、コマンド一発で全MySQLサーバにSQLを発行できたり、インストール時の状態に戻すことが可能なので、テストをする際に重宝します

インストール

  • perlがインストールされていなかったら、インストール
sudo yum -y install perl

sudo sudo cpan -i MySQL::Sandbox
  • 使用しているOSにあったMySQLのバイナリをダウンロード
wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.47-linux-i686-glibc23.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/

取りあえず1つMySQLサーバをインストールしてみる

  • rootで作業をしているとエラーがでてインストール出来ないので.bash_profileに

export SANDBOX_AS_ROOT=1

と書いて

source .bash_profile
make_sandbox mysql-5.1.47-linux-i686-glibc23.tar.gz

これだけで、$HOME/sandboxes配下に「/msb_5_1_47」のような感じでディレクトリが作成され、MySQLの設定なども自動で完了します
また、MySQLも起動します。実行ファイルは、今回であれば$HOMEの5.1.47ディレクトリ内に配置されています


複数のサンドボックスをインストールするには

make_multiple_sandbox  --how_many_nodes=2 mysql-5.1.47-linux-i686-glibc23.tar.gz

のようにします


好きな設定ファイルを読み込ませたい場合は

make_sandbox --my_file=/path/to/my_smart.cnf mysql-5.1.47-linux-i686-glibc23.tar.gz

使ってみる

MySQLにアクセスするには

sandboxes/msb_5_1_47/use

と入力します
他のコマンドは

start, stop, restart, clear, stop_kill

clearは環境をリセットしてMySQLを停止させます

レプリケーション環境を作る

make_replication_sandbox --how_many_slaves=5 mysql-5.1.47-linux-i686-glibc23.tar.gz 

これだけ
how_many_salavesで指定した数インストールされるます。指定しないと2つ
また、スレーブ意外にmasterノードが1つインストールされます
これだけで、レプリケーション環境が自動的に構築されます


全てのサーバに大してコマンドを実行するものもよういされていて

clear_all, start_all, stop_all, restart_all, send_kill_all, status_all, use_all

といった感じです


他にも、サンドボックス内のデータをコピーしたり、既存のサンドボックス内のMySQLデータからノードを追加したりする事も出来ます
sbtoolというサンドボックスを管理するためのツールも用意されています
サンドボックスを削除するには

sbtool -o delete --source_dir ~/sandboxes/rsandbox_5_1_47/

これだけです


その他にもコマンドが色々と用意されていますが、普段使うのはこのくらいでしょうか
その他のコマンドは、公式サイトのドキュメントやcpanのサイト内のレシピにわかりやすく書かれています