天天看点

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