概要
MySQL Sandboxを使うと凄く簡単にMySQL環境の準備を行うことができるので
入門の入門として概要がわかるように簡単に使ってみます
何ができる?簡単に
- 簡単にMySQLの環境準備を行える
- 1つのサーバ上に複数のバージョンのMySQLを用意することができる
- レプリケーション構成も1コマンドで簡単に準備できる
準備
cpanmを用意
$ cd /usr/bin/ $ sudo curl -LOk http://xrl.us/cpanm $ sudo chmod +x cpanm $ sudo yum install -y perl-devel
MySQL Sandboxを入れてみる
$ sudo cpanm MySQL::Sandbox --> Working on MySQL::Sandbox Fetching http://www.cpan.org/authors/id/G/GM/GMAX/MySQL-Sandbox-3.1.07.tar.gz ... OK Configuring MySQL-Sandbox-v3.1.07 ... OK Building and testing MySQL-Sandbox-v3.1.07 ... OK Successfully installed MySQL-Sandbox-v3.1.07 1 distribution installed
サーバの時刻が凄くずれているとcpanmが失敗していた
dateコマンドを叩いて時刻が現在時刻ではない場合は時刻をあわせてあげる</p>
以下時刻を合わせるメモ
Docker上で作業をする場合は、docker runを行う際に「--privileged」オプションを付与してコンテナに権限を与える $ sudo yum install -y ntp $ sudo ntpdate ntp.nict.jp $ date Sun May 29 07:46:02 UTC 2016
MySQL Sandboxを使うための準備
$ mkdir -p $HOME/opt/mysql $HOME/opt/sandboxes // 適宜 .bash_profileにも記述する $ echo 'export SANDBOX_BINARY=$HOME/opt/mysql' >> ~/.bash_profile $ echo 'export SANDBOX_HOME=$HOME/opt/sandboxes' >> ~/.bash_profile $ source ~/.bash_profile
インスタンスを作成する
現在使っているMySQLのバージョンに合わせてソースを取得する
$ cd $SANDBOX_HOME $ curl -L -o mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz http://www-jp.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/
インスタンスの作成
// $SANDBOX_BINARY/5.6.30にサーバー // $SANDBOX_HOME/msb_5_6_30以下にインスタンスが作成される $ make_sandbox mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
mysqlクライアントを起動
$ $SANDBOX_HOME/msb_5_6_30/use mysql [localhost] {msandbox} ((none)) >
その他
// クライアントの停止、この状態ではuseは使えない $ msb_5_6_30/stop // クライアントの起動 $ msb_5_6_30/start // 起動状態の確認 $ msb_5_6_30/status msb_5_6_30 on // 初期化 $ msb_5_6_30/clear
設定を書き換えてみる
// 設定ファイルの書き換え $ vim msb_5_6_30/my.sandbox.cnf // restart・反映 $ msb_5_6_30/restart $ $SANDBOX_HOME/msb_5_6_30/use // 設定の確認 > show global variables like 'hoge';
sandboxの削除
// 「--source_dir」の指定は絶対パスで指定しなければいけない $ sbtool -o delete --source_dir $SANDBOX_HOME/msb_5_6_30
複数のsandboxを用意する場合
// 「--how_many_nodes」で何台ノードを用意するかを指定できる // 一度ソースを使ってインスタンスを作成した場合、2回目からは「5.6.30」などバージョンを指定するだけでいい $ make_multiple_sandbox --how_many_nodes=2 5.6.30 installing node 1 installing node 2 group directory installed in $HOME/opt/sandboxes/multi_msb_5_6_30 // 「_all」というコマンドは全ノードに対して実行するコマンド $ ls -l multi_msb_5_6_30/ -rwxr-xr-x. 1 tomsato tomsato 539 May 29 09:02 check_slaves -rwxr-xr-x. 1 tomsato tomsato 383 May 29 09:02 clear_all -rw-rw-r--. 1 tomsato tomsato 5254 May 29 09:02 connection.json -rw-rw-r--. 1 tomsato tomsato 418 May 29 09:02 default_connection.json -rwxr-xr-x. 1 tomsato tomsato 60 May 29 09:02 n1 -rwxr-xr-x. 1 tomsato tomsato 60 May 29 09:02 n2 drwxrwxr-x. 4 tomsato tomsato 4096 May 29 09:02 node1 drwxrwxr-x. 4 tomsato tomsato 4096 May 29 09:02 node2 -rw-rw-r--. 1 tomsato tomsato 1088 May 29 09:02 README -rwxr-xr-x. 1 tomsato tomsato 228 May 29 09:02 restart_all -rwxr-xr-x. 1 tomsato tomsato 403 May 29 09:02 send_kill_all -rwxr-xr-x. 1 tomsato tomsato 383 May 29 09:02 start_all -rwxr-xr-x. 1 tomsato tomsato 346 May 29 09:02 status_all -rwxr-xr-x. 1 tomsato tomsato 378 May 29 09:02 stop_all -rwxr-xr-x. 1 tomsato tomsato 325 May 29 09:02 use_all
簡単にレプリケーション構成を用意する
インスタンスの用意、レプリケーションの設定を行う
$ make_replication_sandbox --how_many_slaves=1 5.6.30
レプリケーションの設定を確認する
$ rsandbox_5_6_30/check_slaves master port: 22695 File: mysql-bin.000001 Position: 2698 slave # 1 port: 22696 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 2698 Slave_IO_Running: Yes Slave_SQL_Running: Yes Exec_Master_Log_Pos: 2698
ディアルマスターのレプリケーションを作成する
$ make_replication_sandbox --circular=2 5.6.30 $ rcsandbox_5_6_30/check_slaves node # 1 port: 17001 File: mysql-bin.000001 Position: 120 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 120 Slave_IO_Running: Yes Slave_SQL_Running: Yes Exec_Master_Log_Pos: 120 node # 2 port: 17002 File: mysql-bin.000001 Position: 120 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 120 Slave_IO_Running: Yes Slave_SQL_Running: Yes Exec_Master_Log_Pos: 120 // ディアルマスターになっていることを確認する (お互いのportを見合っている) $ rcsandbox_5_6_30/n1 -e "show global variables like 'port'; show slave status\G" | grep -i port port 17001 // 自分のport Master_Port: 17002 // レプリケーション元のport $ rcsandbox_5_6_30/n2 -e "show global variables like 'port'; show slave status\G" | grep -i port port 17002 // 自分のport Master_Port: 17001 // レプリケーション元のport
レプリケーションのテスト
$ rcsandbox_5_6_30/test_replication # Master log: mysql-bin.000001 - Position: 6404 - Rows: 20 # Testing slave #1 ok - Slave #1 IO thread is running ok - Slave #1 SQL thread is running ok - Table t1 found on slave #1 ok - Table t1 has 20 rows on #1 # TESTS : 4 # FAILED: 0 ( 0.0%) # PASSED: 4 (100.0%) # exit code: 0
コメントを書く
コメント一覧