工具|快速部署MySQL测试环境利器dbdeployer
一 前言
之前写过一篇文章介绍 sandbox 快速部署 不同版本的 MySQL 测试环境的文章,这两天测试8.0 的最新版本,使用sandbox的时候软件做了提示,sandbox已经不再维护而是推荐使用 dbdeployer 来部署。
二 关于 dbdeployer
官网的资料显示 dbdeployer 是 sandbox的go 重写的替代版,是一个二进制可执行文件,相比 sandbox 安装更简单。
-
dbdeployer 继承 sandbox 所有功能并有所增强,支持一键部署单实例,主从架构,MRG(单主,多主模式)。 -
dbdeployer 支持从外网下载并安装,当然像sandbox一样指定具体版本。使用 dbdeployer downloads list
-
支持更丰富的数据库类型支持及版本,可以使用 dbdeployer admin capabilities
查看。
另外大家需要了解的是dbdeployer 和sandbox同一个作者。
三 安装部署
3.1 源代码 和版本信息
3.2 下载并安装
下载解压之后 其实就是一个二进制的可执行文件,相比sandbox 的安装的确简单很多。
wget https://github.com/datacharmer/dbdeployer/releases/download/v1.64.0/dbdeployer-1.64.0.linux.tar.gz
tar -xvf dbdeployer-1.64.0.linux.tar.gz
mv dbdeployer-1.64.0.linux /usr/bin/dbdeployer
检查 版本
[root@tidb00 ~]# dbdeployer --version
dbdeployer version 1.64.0
查看帮助 ,具体命令比较多,我删除一部分,大家可以自己测试。
[root@tidb00 ~]# dbdeployer --help
dbdeployer makes MySQL server installation an easy task.
Runs single, multiple, and replicated sandboxes.
Usage:
dbdeployer [command]
Available Commands:
admin sandbox management tasks
data-load tasks related to dbdeployer data loading
delete delete an installed sandbox
delete-binaries delete an expanded tarball
deploy deploy sandboxes
downloads Manages remote tarballs
global Runs a given command in every sandbox
import imports one or more MySQL servers into a sandbox
init initializes dbdeployer environment
sandboxes List installed sandboxes
unpack unpack a tarball into the binary directory
update Gets dbdeployer newest version
use uses a sandbox
Flags:
--config string configuration file (default "/root/.dbdeployer/config.json")
-h, --help help for dbdeployer
--sandbox-binary string Binary repository (default "/root/sandboxes/mysql_binary")
--sandbox-home string Sandbox deployment directory (default "/data/")
--shell-path string Path to Bash, used for generated scripts (default "/usr/bin/bash")
--skip-library-check Skip check for needed libraries (may cause nasty errors)
-v, --version version for dbdeployer
Use "dbdeployer [command] --help" for more information about a command.
3.3 配置环境
安装dbdeployer之后,需要初始化环境,我们可以通过命令 dbdeployer defaults show
来查看 dbdeployer 对部署环境的要求。大部分不需要修改 ,其实核心点就是配置 mysql 软件包的安装目录 和 dbdeployer 的sandbox-home , 配置环境有两种方式:
直接执行
dbdeployer init
指定路径
dbdeployer init --sandbox-binary sandboxes/mysql_binary --sandbox-home sandboxes/mysql_home
到此为止,dbdeployer 就安装完毕,接下来就可以使用它来部署我们所需要的数据库了。
四 实践部署
4.1 现在并解压 指定版本的数据库软件
dbdeployer downloads get-unpack
[root@tidb00 data]# dbdeployer downloads get-unpack Percona-Server-8.0.26-16-Linux.x86_64.glibc2.12-minimal.tar.gz
Downloading Percona-Server-8.0.26-16-Linux.x86_64.glibc2.12-minimal.tar.gz
......... 104 MB
File /data/Percona-Server-8.0.26-16-Linux.x86_64.glibc2.12-minimal.tar.gz downloaded
Checksum matches
Unpacking tarball Percona-Server-8.0.26-16-Linux.x86_64.glibc2.12-minimal.tar.gz to /data/sandboxes/mysql_binary/8.0.26
.........100.........200.........300......364
Renaming directory /data/sandboxes/mysql_binary/Percona-Server-8.0.26-16-Linux.x86_64.glibc2.12-minimal to /data/sandboxes/mysql_binary/8.0.26
4.2 部署
部署实例的核心命令是 dbdeployer deploy
,我们对测试实例的需求一般就是 单机 ,主从,MRG .
创建单个节点
dbdeployer deploy single 8.0.26
创建3个实例,他们之间相互独立.
dbdeployer deploy multiple -n 3 8.0.26
该命令会在 sandbox-home 下创建一个 multi_msb_8_0_26 ,并在该目录下创建两个 数据库实例。
创建主从复制
可以使用 命令 查看具体的参数 和用法
dbdeployer deploy replication -h
$ dbdeployer deploy replication 5.7 # deploys highest revision for 5.7
$ dbdeployer deploy replication 5.7.21 # deploys a specific revision
$ dbdeployer deploy replication /path/to/5.7.21 # deploys a specific revision in a given path
# (implies topology = master-slave)
$ dbdeployer deploy --topology=master-slave replication 5.7
# (explicitly setting topology)
$ dbdeployer deploy --topology=group replication 5.7
$ dbdeployer deploy --topology=group replication 8.0 --single-primary
$ dbdeployer deploy --topology=all-masters replication 5.7
$ dbdeployer deploy --topology=fan-in replication 5.7
$ dbdeployer deploy --topology=ndb replication ndb8.0.14
比如我们需要创建主从结构 ,可以使用如下命令
dbdeployer deploy replication 8.0.26 -n N
其中-n 是代表数据库的总的节点数,默认是3 ,也就是一主两从。如果需要创建一主一从并且开启GTID,设置 -n 2 加上 gtid 参数即可。
dbdeployer deploy replication 8.0.26 -n N --gtid
部署MGR 集群
dbdeployer deploy --topology=group replication 8.0.26
Installing and starting master
. sandbox server started
Installing and starting slave1
. sandbox server started
/data/rsandbox_8_0_26/initialize_slaves
initializing slave 1
Replication directory installed in /data/rsandbox_8_0_26
run 'dbdeployer usage multiple' for basic instructions'
当然还有其他场景,我就不一一例举了,大家有兴趣的可以自己动手实践,毕竟纸上来得终觉浅,绝知此事要躬行。
4.3 实例操作
实例创建完成之后,我们可以在 对应的目录,一般是 $sandbox-home 目录下,有对应实例的文件夹。文件里面有针对该实例的操作命令shell脚本。如下:
其实这块的功能和之前的sandbox 类似,不同架构下有不同的功能脚本,主从架构下的脚本如下,多了些主从相关的操作命令。
对已经创建好的实例可以进行如下操作:
启停该组所有实例的脚本 *_all 脚本
登录数据库脚本 use ,如果是多个节点 就是 n1,n2 类似
重置该组所有实例的脚本(清除所有测试数据并重新初始化成全新的主从)
主从实例的数据目录(主库为 master,从库分别为 node1、node2 依次递增)
各实例的配置文件
默认用户授权命令
单独启停实例命令
binlog、relaylog 解析命令 只在单实例环境有有,多实例或者主从架构就没有该功能。
五 dbdeployer 常用管理命令
-
查看当前已经下载的 mysql 版本
dbdeployer versions
-
查看当前部署的数据库实例
dbdeployer sandboxes
-
删除已安装数据库实例
dbdeployer delete multi_msb_8_0_26
List of deployed sandboxes:
/data/multi_msb_8_0_26
Running /data/multi_msb_8_0_26/send_kill_all destroy
# executing 'send_kill' on /data/multi_msb_8_0_26
executing "send_kill" on node 1
Terminating the server immediately --- kill -9 27243
executing "send_kill" on node 2
Terminating the server immediately --- kill -9 27640
Running rm -rf /data/multi_msb_8_0_26
Directory /data/multi_msb_8_0_26 deleted
-
更新 dbdeployer
dbdeployer update
最后,希望大家感兴趣的可以动手实践,have fun with dbdeployer。