如何使用 dbdeployer 快速部署 MySQL 测试环境

数据库关系型数据库技术服务知识库
前言

在日常学习以及工作中,为了更方便的测试多个数据库版本之间的功能差异,我们会装不同版本的实例,通常使用二进制安装的大致步骤如下:

  1. 创建相关目录
  2. 初始化 MySQL
  3. 启动 MySQL
  4. 如果有配置主从的需求,还需要额外的命令

整个配置过程如果通过几条命令完成,会大大减少我们的工作量。这里介绍 dbdeployer 工具,它有如下优点:

  1. 工具安装方便,可以迅速安装和使用不同版本的数据库。
  2. 配置主从,MGR 集群非常方便,只通过一条命令即可。
  3. 提供了多个脚本,如快速启停 MySQL,解析 binlog等。
如何安装

1.创建相关目录

(base) [root@rudonx ~]# mkdir -p  sandboxes/mysql_binary/

(base) [root@rudonx ~]# mkdir -p  sandboxes/mysql_home

2.安装步骤

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
```
`
3.查看安装的版本
```shell
(base) [root@ip-10-0-0-22 ~]# dbdeployer --version
dbdeployer version 1.64.0
```

4.启动并初始化 dbdeployer
受限于国内网络等原因,这里请耐心等待
```shell
(base) [root@ip-10-0-0-22 ~]# dbdeployer init --sandbox-binary sandboxes/mysql_binary --sandbox-home sandboxes/mysql_home
```

# 常规命令
#### 1. 查看支持的 MySQL 版本
```shell
(base) [root@ip-10-0-0-22 msb_5_6_23]# dbdeployer downloads list

```

#### 2. 选择自动下载指定的版本
```shell
(base) [root@ip-10-0-0-22 ~]# dbdeployer downloads get-unpack mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz

```

#### 3.支持将已经下载好的二进制安装包导入到 dbdeployer
如果上述安装包中没有您需要的,您可以从 MySQL 官网上进行下载,然后导入即可
```shell
 (base) [root@ip-10-0-0-22 ~]# dbdeployer unpack /home/ec2-user/mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz 

```

#### 4. 检查 dbdeployer的已安装/可用的tarball二进制软件包列表
```shell
(base) [root@ip-10-0-0-22 msb_5_6_23]# dbdeployer versions

Basedir: /root/sandboxes/mysql_binary
5.6.23  8.0.21  8.0.27
```

#### 5. 部署单机版的 MySQL
```shell
(base) [root@ip-10-0-0-22 mysql_binary]# dbdeployer deploy single 5.6.23

```

可用的选项如下:
• multiple 创建多个独立的 MySQL
• replication 创建复制环境的 MySQL
• single 创建单节点的 MySQL
部署三个相互独立的 MySQL 实例,命令如下:
```sql
dbdeployer deploy  multiple   -n 3 8.0.27
```

#### 5. 创建 一主一从架构,并开启 GTID
```shell
(base) [root@ip-10-0-0-22 ~]# dbdeployer deploy replication 8.0.27 -n 2 --gtid

Installing and starting master
. sandbox server started
Installing and starting slave1
. sandbox server started
$HOME/sandboxes/mysql_home/rsandbox_8_0_27/initialize_slaves
initializing slave 1
Replication directory installed in $HOME/sandboxes/mysql_home/rsandbox_8_0_27
run 'dbdeployer usage multiple' for basic instructions'
```

-n 是代表数据库的总的节点数,默认是3 ,也就是一主两从。如果需要创建一主一从并且开启GTID,设置 -n 2 加上 gtid 参数即可实现。
#### 6. 创建 MGR 集群
如果想创建 MGR 集群,命令如下:
```shell

dbdeployer deploy --topology=group replication 8.0.27
```

# 常用工具/脚本
常用的工具/脚本有如下几类

1. use:登录 MySQL 实例
2. show_log:查看 错误日志,general log
3. show_binlog & show_relaylog:解析binlog 和 relay log
4. start & stop 启停 MySQL 实例
5. wipe_and_restart:清除数据并重新启动

下面我们介绍下常用的脚本如何使用
#### 1. 登录 MySQL
```shell
(base) [root@ip-10-0-0-22 msb_8_0_27]# ./use

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.27 MySQL Community Server - GPL
```

#### 2. 解析binlog
```sql
(base) [root@ip-10-0-0-22 msb_8_0_27]# ./show_binlog 000001

# at 366
#220314  6:07:14 server id 1  end_log_pos 406 CRC32 0xc29c436a  Write_rows: table id 88 flags: STMT_END_F

BINLOG '
ktsuYhMBAAAANgAAAG4BAAAAAFgAAAAAAAEABnJ1ZG9ueAAGcnVkb254AAEDAAEBAQDQWGqd
ktsuYh4BAAAAKAAAAJYBAAAAAFgAAAAAAAEAAgAB/wACAAAAakOcwg==
'/*!*/;
### INSERT INTO `rudonx`.`rudonx`
### SET
###   @1=2
# at 406
#220314  6:07:14 server id 1  end_log_pos 437 CRC32 0x88a0c80e  Xid = 11
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
```

#### 3. 查看错误日志
```shell
(base) [root@ip-10-0-0-22 msb_8_0_27]# ./show_log err

2022-03-14T05:47:04.087577Z 0 [ERROR] [MY-010119] [Server] Aborting
2022-03-14T05:47:05.508114Z 0 [System] [MY-010910] [Server] /root/sandboxes/mysql_binary/8.0.27/bin/mysqld: Shutdown complete (mysqld 8.0.27)  MySQL Community Server - GPL.
2022-03-14T05:50:34.027676Z 0 [System] [MY-010116] [Server] /root/sandboxes/mysql_binary/8.0.27/bin/mysqld (mysqld 8.0.27) starting as process 16672
2022-03-14T05:50:34.038321Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
```

# 总结
从上面可以看出,对于 MySQL 的安装,部署 以及日常的使用还是非常方便的。同时 dbdeployer 的功能还是非常丰富的,其他更过命令的支持,建议您参考文档。
# 参考文档
[1] [https://github.com/datacharmer/dbdeployer/releases](https://github.com/datacharmer/dbdeployer/releases)
[2] [https://github.com/datacharmer/dbdeployer/wiki/main-operations](https://github.com/datacharmer/dbdeployer/wiki/main-operations)
**如果您有其他问题,欢迎您联系火山引擎**[技术支持服务](https://console.volcengine.com/ticket/createTicketV2/)

38
0
0
0
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论