使用MySQL沙盒快速设置数据库
介绍
建立MySQL快速“沙箱”实例有各种各样的原因。 您可以使用它们来测试不同类型的复制(例如主主或各种从属拓扑),根据不同版本的MySQL测试代码,或者在每个开发人员的基础上设置每个人拥有自己的数据库的MySQL实例运行在不同的端口,以便他们可以轻松地分解/设置数据库或进行模式更改,而不影响其他团队成员。 一个完美的工具来做这些事情很容易的是MySQL Sandbox 。
下载先决条件
要有效使用MySQL沙箱,您需要两件事,即MySQL沙箱工具本身,以及沙盒脚本可用于设置实例的MySQL压缩包。 您可以下载最新的MySQL沙盒版本(如本文所述的2.0.12):
wget http://launchpad.net/mysql-sandbox/mysql-sandbox-2.0/2.0/+download/mysql_sandbox_2.0.12.tar.gz
您可以从任何MySQL镜像下载MySQL tarball。 重要的是获得非RPM,Intel C / C ++编译,glibc-2.3版本(在文件名中查找具有“icc”的tar.gz文件),例如,如果要版本5.1:
wget ftp://mirror.anl.gov/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz
使用MySQL沙箱安装实例
首先,您需要提取MySQL Sandbox工具并将目录更改为:
$ tar xzvf mysql_sandbox_2.0.12.tar.gz
$ cd mysql_sandbox_2.0.12
创建实例的最简单和最快捷的方法是:
$ ./make_sandbox /path/to/mysql-X.X.XX-osinfo.tar.gz
其中mysql-XXXX-osinfo.tar.gz
是我们刚刚下载的MySQL压缩包。 你完成了 但是,这将把沙盒放在您的主目录( $ HOME / sandboxes / msb_X_X_XX
)下的目录中
,这可能或可能不符合您的目的。 它使用默认用户,密码,端口和目录名称进行设置。 我们来微调一下吧。
设置自定义调整实例
我想将我的实例放入我创建的分区,名为/ mnt / mysql_sandboxes
。 我创建了一个名为tarballs
的子目录,它保存了我们下载的MySQL压缩包,MySQL的Sandbox将提取用于安装。 因为我正在安装5.1.30版本,所以我想调用安装MySQL数据文件5.1.30_single的目录
,但是你可以调用它。 我将创建一个名为jgoulah
和密码goulah
的默认用户。 默认情况下,它将端口设置为版本号,而没有点(在这种情况下为5130),所以我们给它一个自定义端口,以便它监听10000。
mysql_sandbox_2.0.12 $ ./make_sandbox \
/mnt/mysql_sandboxes/tarballs/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz \
--upper_directory=/mnt/mysql_sandboxes/ --sandbox_directory=5.1.30_single \
--db_user=jgoulah --db_password=goulah --sandbox_port=10000
以下是输出:
unpacking /mnt/mysql_sandboxes/tarballs/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz
Executing ./low_level_make_sandbox \
--basedir=/mnt/mysql_sandboxes/tarballs/5.1.30 \
--sandbox_directory=msb_5_1_30 \
--install_version=5.1 \
--sandbox_port=5130 \
--no_ver_after_name \
--upper_directory=/mnt/mysql_sandboxes/ \
--sandbox_directory=5.1.30_single \
--db_user=jgoulah \
--db_password=goulah \
--basedir=/mnt/mysql_sandboxes/tarballs/5.1.30 \
--sandbox_port=10000 \
--my_clause=log-error=msandbox.err
The MySQL Sandbox, version 2.0.12 16-Oct-2008
(C) 2006,2007,2008 Giuseppe Maxia, Sun Microsystems, Database Group
installing with the following parameters:
upper_directory = /mnt/mysql_sandboxes/
sandbox_directory = 5.1.30_single
sandbox_port = 10000
datadir_from = script
install_version = 5.1
basedir = /mnt/mysql_sandboxes/tarballs/5.1.30
my_file =
operating_system_user = jgoulah
db_user = jgoulah
db_password = goulah
my_clause = log-error=msandbox.err
prompt_prefix = mysql
prompt_body = [\h] {\u} (\d) > '
force = 0
no_ver_after_name = 1
verbose = 0
load_grants = 1
no_load_grants = 0
do you agree? ([Y],n) y
loading grants
. sandbox server started
installation options saved to current_options.conf.
To repeat this installation with the same options,
use ./low_level_make_sandbox --conf_file=current_options.conf
----------------------------------------
Your sandbox server was installed in /mnt/mysql_sandboxes//5.1.30_single
现在已经安装并启动了,我们可以看到正在运行的进程正确选择:
$ ps -ef | grep mysql | grep jgoulah
jgoulah 11128 1 0 13:48 pts/3 00:00:00 /bin/sh /mnt/mysql_sandboxes/tarballs/5.1.30/bin/mysqld_safe --defaults-file=/mnt/mysql_sandboxes//5.1.30_single/my.sandbox.cnf
jgoulah 11203 11128 0 13:48 pts/3 00:00:00 /mnt/mysql_sandboxes/tarballs/5.1.30/bin/mysqld --defaults-file=/mnt/mysql_sandboxes//5.1.30_single/my.sandbox.cnf --basedir=/mnt/mysql_sandboxes/tarballs/5.1.30 --datadir=/mnt/mysql_sandboxes//5.1.30_single/data --user=jgoulah --log-error=/mnt/mysql_sandboxes//5.1.30_single/data/msandbox.err --pid-file=/mnt/mysql_sandboxes//5.1.30_single/data/mysql_sandbox10000.pid --socket=/tmp/mysql_sandbox10000.sock --port=10000
我们可以在端口10000上连接它:
$ mysql -u jgoulah --protocol=TCP -P 10000 -pgoulah
您也可以进入我们安装此目录的目录,并有一些方便的脚本:
$ cd /mnt/mysql_sandboxes/5.1.30_single/
您可以运行使用
脚本来连接到mysql(我们刚才做的同样的事情,除了我们不必记住我们的端口,用户或通过):
$ ./use
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.30 MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql [localhost] {jgoulah} ((none)) >
停止实例:
$ ./stop
或者再次启动它:
$ ./start
. sandbox server started
还有一些其他脚本,您可以在此目录中进行实验 ,这些脚本在此记录。
设置复制实例
这个工具的好处是它还将使用单个命令设置MySQL的复制实例。 这允许您在复制环境下测试应用程序,甚至可以测试不同的复制拓扑,包括多个从站或多主站复制。 我们将使用与上述单个实例类似的选项,除了我们将使用端口11000(从站获取端口+ 1,...,端口+ n,其中n是从站数)。 我们将安装进入/mnt/mysql_sandboxes/5.1.30_replicated
。 注意这一次我们使用make_replication_sandbox
脚本:
mysql_sandbox_2.0.12 $ ./make_replication_sandbox \
/mnt/mysql_sandboxes/tarballs/mysql-5.1.30-linux-i686-icc-glibc23.tar.gz \
--upper_directory=/mnt/mysql_sandboxes/ \
--replication_directory=5.1.30_replicated --sandbox_base_port=11000
installing and starting master
installing slave 1
installing slave 2
starting slave 1
. sandbox server started
starting slave 2
. sandbox server started
initializing slave 1
initializing slave 2
replication directory installed on /mnt/mysql_sandboxes//5.1.30_replicated
现在我们有一个主人和两个Minion去。 请注意,安装复制沙箱的命令不会像我们对单个实例一样指定用户,但默认情况下会创建两个用户:
用户: root @ localhost
密码: msandbox
用户: msandbox @%
密码: msandbox
您可以如上所示运行使用
脚本,或直接连接到主控:
$ mysql -u msandbox --protocol=TCP -P 11000 -pmsandbox
创建数据库:
mysql> create database jg_repl_test;
mysql> exit;
连接到其中一个从站:
$ mysql -u msandbox --protocol=TCP -P 11001 -pmsandbox
mysql> show databases like '%jg_%';
+------------------+
| Database (%jg_%) |
+------------------+
| jg_repl_test |
+------------------+
我们可以看到它已经复制了。 有各种各样的选项,你可以给make_replication_sandbox
命令,例如你可以给它--master_master
选项来设置一个多主控实例。
结论
我们已经看到了如何创建一个单一的MySQL实例,还有一个有两个从站的复制主机。 一旦您确定了目录布局,这些设置只需几秒钟即可进行设置。 为了各种不同的目的,设置MySQL的临时实例真的不是一个更简单的方法。