使用MySQL Sandbox的快速数据库设置

使用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的临时实例真的不是一个更简单的方法。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏