MySQL 安装利器---Sandbox

Posted ACMUG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 安装利器---Sandbox相关的知识,希望对你有一定的参考价值。

作者简介:杨奇龙

目前任职于杭州有赞科技DBA,负责数据库架构设计和运维平台开发工作,擅长数据库系统性能调优,故障诊断。




一 sandbox是什么?
mysql Sandbox一个非常简单快捷的安装搭建MySQL实例的工具,它可以非常快速地满足我们对MySQL环境各种需求:单机实例,主从,一主多从等等架构(区别于自己安装MySQL 软件)。比如 新的数据库版本发行之后,想要尽快尝鲜 ,又不想花太多资源去安装,就可以使用sandbox帮助我们完成创建单个或者主从结构的实例。对于那些不懂MySQL安装的开发,测试同学而言,可以使用sandbox的快速搭建一个符合要求的数据库。MySQL Sandbox 快速,是以秒来衡量的,谁用谁知道。

二 如何安装和使用
2.1 安装sandbox
本文的案例是基于Centos虚拟机测试。 

yum install cpan -y

yum install perl-Test-Simple -y

cpan MySQL::Sandbox

echo 'export SANDBOX_AS_ROOT=1' >> /root/.bash_profile && source /root/.bash_profile

获取Percona server 5.7.17 版本

wget "https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.17-11/binary/tarball/Percona-Server-5.7.17-11-Linux.x86_64.ssl101.tar.gz"

2.2 常用命令
安装完成之后默认会在 /usr/local/bin/ 目录下产生make_开头的文件。

make_sandbox                 基于二进制压缩包创建MySQL实例 

make_sandbox_from_source     基于源码创建MySQL实例,参数是而执行 ./configure && make 成功的源码存放目录 

make_sandbox_from_installed  基于已经安装好的mysql可执行文件目录安装MySQL实例

make_sandbox_from_url        从网上下载docker 镜像进行安装,具体参考 --help 命令

make_multiple_sandbox        创建多个相同版本的MySQL实例

make_multiple_custom_sandbox 创建不同版本的MySQL实例

make_replication_sandbox     搭建主从复制结构,可以是一主一从,也可以是一主多从。

sbtool :                     sandbox管理工具

要深入了解各个命令的具体用法,请参考源码目录下的README文档,然后再自己动手实践,能理解更深刻,毕竟纸上来得终觉浅,绝知此事要躬行。下面主要通过
make_sandbox 和 make_replication_sandbox 来介绍如何使用 。

2.3 使用sandbox
安装单个实例

  1. root@rac4:/data/mysql# >make_sandbox /data/mysql/Percona-Server-5.7.17-11-Linux.x86_64.ssl101.tar.gz

  2. unpacking /data/mysql/Percona-Server-5.7.17-11-Linux.x86_64.ssl101.tar.gz

  3. Executing low_level_make_sandbox --basedir=/data/mysql/5.7.17 \

  4. --sandbox_directory=msb_5_7_17 \

  5. --install_version=5.7 \

  6. --sandbox_port=5717 \

  7. --no_ver_after_name \

    --my_clause=log-error=msandbox.err

  8.     The MySQL Sandbox, version 3.2.05

  9.     (C) 2006-2016 Giuseppe Maxia

  10. Installing with the following parameters:

  11. upper_directory = /root/sandboxes

  12. sandbox_directory = msb_5_7_17

  13. sandbox_port = 5717

  14. check_port =

  15. no_check_port =

  16. datadir_from = script

  17. install_version = 5.7

  18. basedir = /data/mysql/5.7.17

  19. tmpdir =

  20. my_file =

  21. operating_system_user = root

  22. db_user = msandbox

  23. remote_access = 127.%

  24. bind_address = 127.0.0.1

  25. ro_user = msandbox_ro

  26. rw_user = msandbox_rw

  27. repl_user = rsandbox

  28. db_password = msandbox

  29. repl_password = rsandbox

  30. my_clause = log-error=msandbox.err

  31. ...... 省略部分内容

  32. prompt_prefix = mysql

  33. prompt_body = [\h] {\u} (\d) >

  34. force =

  35. no_ver_after_name = 1

  36. verbose =

  37. load_grants = 1

  38. no_load_grants =

  39. no_run =

  40. no_show =

  41. keep_uuid =

  42. history_dir =

  43. do you agree? ([Y],n) Y

输入Y 然后sandbox就会启动一个实例,需要等待20s 左右。

# Starting server

. sandbox server started

# Loading grants

Your sandbox server was installed in $HOME/sandboxes/msb_5_7_17

因为本案例采用root用户安装测试,新生成的数据库目录在 /root/sandboxes/msb_5_7_17,其中的文件如下 
MySQL 安装利器---Sandbox
大家可以研究各个可执行文件的具体内容。常用的有use,stop,start,restart 等等,例如

  1. root@rac4:~/sandboxes/msb_5_7_17# >./use --登陆数据库

  2. Welcome to the MySQL monitor. Commands end with ; or \g.

  3. Your MySQL connection id is 9

  4. Server version: 5.7.17-11 Percona Server (GPL), Release 11, Revision f60191c

  5. Copyright (c) 2009-2016 Percona LLC and/or its affiliates

  6. mysql [localhost] {msandbox} ((none)) > show databases;

  7. +--------------------+

  8. | Database           |

  9. +--------------------+

  10. | information_schema |

  11. | mysql              |

  12. | performance_schema |

  13. | sys                |

  14. | test               |

  15. +--------------------+

  16. 5 rows in set (0.00 sec)

搭建主从本例中启用gtid 并且设置创建1个slave. 因为上例已经创建了一个5.7.17 源程序目录,我们可以基于该目录创建主从,当然也可以基于源码的压缩包。

  1. root@rac4:/data/mysql# >make_replication_sandbox --gtid --how_many_slaves=1 5.7.17

  2. installing and starting master

  3. installing slave 1

  4. starting slave 1

  5. .. sandbox server started

  6. initializing slave 1

  7. replication directory installed in $HOME/sandboxes/rsandbox_5_7_17

根据结果提示sandbox创建的主从在目录$HOME/sandboxes/rsandbox_5_7_17,进入该目录查看有如下文件 

其中master 和node1 分别是主库和备库的数据库目录, m和n1 都是登陆主库的命令,s1 和n2 都是登陆slave 的命令,其他的可以从文件名知道具体用途。这里介绍两个命令test_replication和check_slaves 两个命令功能类似,都是检查slave 的状态信息。check_slaves会把主库相关信息输出。

  1. root@rac4:~/sandboxes/rsandbox_5_7_17# >sh test_replication 检查主备关系

  2. # Master log: mysql-bin.000001 - Position: 10732 - Rows: 20

  3. # Testing slave #1

  4. ok - Slave #1 acknowledged reception of transactions from master

  5. ok - Slave #1 IO thread is running

  6. ok - Slave #1 SQL thread is running

  7. ok - Table t1 found on slave #1

  8. ok - Table t1 has 20 rows on #1

  9. # TESTS : 5

  10. # FAILED: 0 ( 0.0%)

  11. # PASSED: 5 (100.0%)

  12. # exit code: 0

  13. root@rac4:~/sandboxes/rsandbox_5_7_17# >./check_slaves  #

  14. master

  15. port: 20192

  16.              File: mysql-bin.000001

  17.          Position: 10732

  18. Executed_Gtid_Set: 00020192-1111-1111-1111-111111111111:1-40

  19. slave # 1

  20. port: 20193

  21.               Master_Log_File: mysql-bin.000001

  22.           Read_Master_Log_Pos: 10732

  23.              Slave_IO_Running: Yes

  24.             Slave_SQL_Running: Yes

  25.           Exec_Master_Log_Pos: 10732

  26.            Retrieved_Gtid_Set: 00020192-1111-1111-1111-111111111111:1-40

  27.             Executed_Gtid_Set: 00020192-1111-1111-1111-111111111111:1-40


三 小结
     按照之前要部署虚拟机安装MySQL的时间和精力来看,使用sandbox的感觉就是一个字-,只需简单的命令即可完成而且对使用者几乎是透明的当你需要快速搭建最小化测试环境时,完全可以使用sandbox助你一臂之力。当然本文仅仅只是本人在比较短时间内测试的总结,需要更加深入了解sandbox使用的,可以多看看源码和各个命令。



以上是关于MySQL 安装利器---Sandbox的主要内容,如果未能解决你的问题,请参考以下文章

Canal增量数据同步利器介绍与安装

LoadRunner监控mysql利器-SiteScope(转)

Percona Toolkit mysql辅助利器

pymsql与ORM--python操作MySQL之利器

一款 Python 利器!

自动化监控利器 Zabbix 安装详细过程(含 Docker for Zabbix)