MySQL Sandbox安装与使用

mysql sandbox是perl语言开发的一个mysql测试工具,可以快速的建立mysql功能测试环境。mysql sandbox使用不同的安装目录(basedir)、数据目录(datadir)和端口(port),因而可以在同一台机器上建立多个相互不干扰的mysql实例。mysql sandbox使用源码包或者已安装的二进制文件可以快速的建立单个mysql实例、主从复制架构、环形复制架构、以及同时使用多个sandbox。你也可以使用mysql cluster sandbox建立集群的测试环境。

在工作学习中经常需要测试多个版本的mysql,每次都需要编译mysql源码和设置mysqld的相关配置。如果机器的配置较低,编译的时间很长,也需要做很多重复的配置工作。mysql的源码编译安装配置过程步骤有点多,也很容易出错(BTW,经过最初的几次安装配置,你一定对mysql的工作目录的结构和mysqld的启动过程有了比较深刻的认识)。而mysql sandbox可以快速的安装和配置一个mysql server。

目前生产上使用的5.5版本,虽然5.6的GA版本也发布了很长时间,但是那些迷人的特性一直没有去体验和研究。快回家过年了,也想把自己的Macbook上也配置好不同版本的测试环境,在陪伴家人的同时也可以体验一些mysql新的东西,于是想到到了mysql sandbox这个听说已很久的东西。虽然OSX上也可以直接运行mysql和mysql sandox,我还是在mac上安装了virtualbox和centos(v6.5),用于安装mysql sandbox。

mysql sandbox 的安装还算简单,但是还是操作过程有些需要注意的地方。

1、 首先安装一些mysql 和sandbox依赖的软件包

yum install perl-CPAN    #(perl以及开发支持模块)

perl --version              # 查看perl的版本,官方推荐使用版本号大于5.8的版本

yum install libaio*        # (支持异步IO的lib库,mac系统目前好像还不支持)

yum install bison*       # (语法解析函数库)

yum install ncurses      # (终端API函数库)

2、 安装mysql sandbox

下载一个最新的MySQL Sandbox GA版本

进入sandbox源代码目录,编译和安装sandbox到指定目录,安装目录为/usr/local/sandbox

perl Makefile.PL PREFIX=/usr/local/sanbox

make

make install

3、 安装单个mysql的实例

1)在/usr/local/sandbox目录下建立mysql目录,用于存放不同版本的mysql的安装文件和数据文件。

mkdir -p /usr/local/sandnox/mysql

2)下载mysql源码包压缩包,并放入到/usr/local/sandnox/mysql下面

3)用压缩包创建mysql side instance

#进入sandbox的安装目录下面的bin目录

cd /usr/local/sandbox/bin/

#设置环境变量

export PERL5LIB=/usr/local/sandbox/lib/perl5/site_perl/5.8.8

export SANDBOX_AS_ROOT=1

./make_sandbox /usr/local/sandbox/mysql/mysql-5.6.15-linux-glibc2.5-i686.tar.gz

为了方便使用,在/etc/profile文件里面添加环境变量设置

export PERL5LIB=/usr/local/sandbox/share/perl5
export SANDBOX_AS_ROOT=1

export PATH=/usr/local/sandbox/bin:$PATH

4)执行make_sandbox输出的结果提供很多有用的信息(见文章最末),也可以在执行make_sandbox的时候指定这些参数。
upper_directory = /root/sandboxes 默认的沙箱的工作目录。
basedir = /usr/local/sandbox/mysql/5.6.15 mysql的工作目录。

连接数据库
# /usr/local/sandbox/boxes/5.6.15/bin/mysql -uroot -p -h127.0.0.1 -P5615

4、MySQL Sandbox的使用

在/root/sandboxes/msb_5_6_15目录下面,有很多可用的sandbox工具,可以参考mysql sandbox cookbook

./use 可以使用root帐号(默认密码msandbox)通过mysql client连接mysqld

./start 启动mysqld服务进程

./stop 关闭mysqld进程

./clear 清空test数据库和删除datadir下面的所有的文件,并终止mysqld运行。

5、常见错误

1)没有设置“export PERL5LIB=$HOME/usr/local/lib/perl5/site_perl/5.8.8”这个环境变量,就执行了make & make install。

# ./make_sandbox /usr/local/sandbox/boxes/mysql-5.6.15-linux-glibc2.5-i686.tar.gz

Can’t locate MySQL/Sandbox.pm in @INC (@INC contains: /usr/local/lib/perl5/site_perl/ /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at ./bin/make_sandbox line 27.

BEGIN failed–compilation aborted at ./bin/make_sandbox line 27.

# find / -name Sandbox.pm

/usr/src/MySQL-Sandbox-3.0.43/lib/MySQL/Sandbox.pm

/usr/src/MySQL-Sandbox-3.0.43/blib/lib/MySQL/Sandbox.pm

/usr/local/sandbox/share/perl5/MySQL/Sandbox.pm

# echo  $PERL5LIB

/usr/local/lib/perl5/site_perl/  与上面的perl5实际位置不一致

重新设置$PERL5LIB环境变量值为安装的实际路径

export PERL5LIB=/usr/local/sandbox/share/perl5

解决方法参考:https://bugs.launchpad.net/mysql-sandbox/+bug/392996

2)使用root用户创建一个mysql side instance时,需要设置“export SANDBOX_AS_ROOT=1”环境变量

/make_sandbox /usr/local/sandbox/boxes/mysql-5.6.15-linux-glibc2.5-i686.tar.gz

MySQL Sandbox should not run as root

If you know what you are doing and want to  run as root nonetheless, please set the environment variable ‘SANDBOX_AS_ROOT’ to a nonzero value

设置环境变量# export SANDBOX_AS_ROOT=1即可

参考资料:

[1] mysql sandbox 手册mysql sandbox cookbook

[2]mysql sandbox下载列表mysql sandbox downloads list

[3] mysql sandbox一个很不错的ppt(需要梯子)mysql-sandbox-3.0 ppt

此条目发表在mysql分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>