前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工具|快速部署MySQL测试环境利器dbdeployer

工具|快速部署MySQL测试环境利器dbdeployer

作者头像
用户1278550
发布2022-04-01 09:27:57
6040
发布2022-04-01 09:27:57
举报
文章被收录于专栏:idbaidba

一 前言

之前写过一篇文章介绍 sandbox 快速部署 不同版本的 MySQL 测试环境的文章,这两天测试8.0 的最新版本,使用sandbox的时候软件做了提示,sandbox已经不再维护而是推荐使用 dbdeployer 来部署。

二 关于 dbdeployer

官网的资料显示 dbdeployer 是 sandbox的go 重写的替代版,是一个二进制可执行文件,相比 sandbox 安装更简单。

  1. dbdeployer 继承 sandbox 所有功能并有所增强,支持一键部署单实例,主从架构,MRG(单主,多主模式)。
  2. dbdeployer 支持从外网下载并安装,当然像sandbox一样指定具体版本。使用 dbdeployer downloads list
  3. 支持更丰富的数据库类型支持及版本,可以使用 dbdeployer admin capabilities 查看。

另外大家需要了解的是dbdeployer 和sandbox同一个作者。

三 安装部署

3.1 源代码 和版本信息

官网地址 https://github.com/datacharmer/dbdeployer

下载地址 https://github.com/datacharmer/dbdeployer/releases

3.2 下载并安装

下载解压之后 其实就是一个二进制的可执行文件,相比sandbox 的安装的确简单很多。

代码语言:javascript
复制
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

检查 版本

代码语言:javascript
复制
[root@tidb00 ~]# dbdeployer --version
dbdeployer version 1.64.0

查看帮助 ,具体命令比较多,我删除一部分,大家可以自己测试。

代码语言:javascript
复制
[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

代码语言:javascript
复制
[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

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
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 类似,不同架构下有不同的功能脚本,主从架构下的脚本如下,多了些主从相关的操作命令。

对已经创建好的实例可以进行如下操作:

代码语言:javascript
复制
启停该组所有实例的脚本 *_all  脚本
登录数据库脚本 use ,如果是多个节点 就是 n1,n2 类似
重置该组所有实例的脚本(清除所有测试数据并重新初始化成全新的主从)
主从实例的数据目录(主库为 master,从库分别为 node1、node2 依次递增)
各实例的配置文件
默认用户授权命令
单独启停实例命令
binlog、relaylog 解析命令 只在单实例环境有有,多实例或者主从架构就没有该功能。

五 dbdeployer 常用管理命令

  1. 查看当前已经下载的 mysql 版本 dbdeployer versions
  2. 查看当前部署的数据库实例 dbdeployer sandboxes
  3. 删除已安装数据库实例
代码语言:javascript
复制
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
  1. 更新 dbdeployer

dbdeployer update

最后,希望大家感兴趣的可以动手实践,have fun with dbdeployer。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yangyidba 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二 关于 dbdeployer
  • 三 安装部署
    • 3.1 源代码 和版本信息
      • 3.2 下载并安装
        • 3.3 配置环境
          • 四 实践部署
            • 4.1 现在并解压 指定版本的数据库软件
              • 4.2 部署
                • 4.3 实例操作
                相关产品与服务
                云数据库 SQL Server
                腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档