技术分享 | 如何使用 dbdeployer 快速搭建 MySQL 测试环境
来源:SegmentFault
时间:2023-02-23 09:18:29 277浏览 收藏
大家好,今天本人给大家带来文章《技术分享 | 如何使用 dbdeployer 快速搭建 MySQL 测试环境》,文中内容主要涉及到MySQL、数据库,如果你对数据库方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!
一、工具介绍
dbdeployer 是一款十分强大的数据库测试环境部署工具,可实现一键部署不同架构、不同版本的数据库环境。如:MySQL 主从复制、GTID 模式复制、MySQL 组复制(单主模式、多主模式等)完整的数据库类型支持及版本,可在安装完 dbdeployer 后使用
dbdeployer admin capabilities命令进行查看,以下是当前已支持数据库及组件类型
- Oracle MySQL
- Percona MySQL
- MariaDB
- TiDB
- MySQL NDB Cluster
- Percona XtraDB Cluster
- mysql-shell
本文主要介绍基于 dbdeployer 工具快速搭建 MySQL 测试环境以及 dbdeployer 的基础使用。完整的功能特性以及使用方式可查看 dbdeployer 文档手册,dbdeployer 的文档手册十分详细的介绍了该工具特性及各类使用方式,可查看文末的相关链接。
二、工具安装
本文以 MacOS 下部署为例,Linux 平台安装部署方式基本类似(该工具不提供 Windows 版本),可访问
https://github.com/datacharme...
获取最新版 dbdeployer 下载链接,以下内容中
shell>表示命令行提示符
## 下载当前最新版软件包 shell> wget https://github.com/datacharmer/dbdeployer/releases/download/v1.42.0/dbdeployer-1.42.0.osx.tar.gz ## 软件解压后实际只有一个单独的编译好的可执行文件 shell> tar xzvf dbdeployer-1.42.0.osx.tar.gz ## 将解压的软件拷贝至系统可执行目录下方便使用 shell> chmod +x dbdeployer-1.42.0.osx shell> mv dbdeployer-1.42.0.osx /usr/local/bin/dbdeployer ## 验证是否安装成功 shell> dbdeployer --version shell> dbdeployer --help
三、工具配置
该软件默认使用当前用户的
$HOME/.dbdeployer/config.json作为配置文件。该文件默认未生成,可使用
dbdeployer defaultsexportpath命令导出一份并进行修改。以下我只修改配置文件中的
sandbox-binary参数,将该目录指定为自定义的
$HOME/sandboxes/mysql_base
## 创建 MySQL 软件包及解压后的软件目录 shell> mkdir -p ~/sandboxes/{mysql_package,mysql_base} ## 将默认配置中 sandbox-binary 参数修改为已创建的目录路径 ## 该部分也可使用 dbdeployer defaults export /Users/yuzhenxing/.dbdeployer/config.json 先将配置文件导出,再 vim 手工编辑修改 shell> dbdeployer defaults update sandbox-binary $HOME/sandboxes/mysql_base ## 查看已修改的配置信息 ## 配置中包含各类 MySQL 的初始化信息,可根据实际情况灵活调整 shell> dbdeployer defaults show # Configuration file: /Users/yuzhenxing/.dbdeployer/config.json { "version": "1.39.0", "sandbox-home": "$HOME/sandboxes", "sandbox-binary": "$HOME/sandboxes/mysql_base", "use-sandbox-catalog": true, "log-sb-operations": false, "log-directory": "/Users/yuzhenxing/sandboxes/logs", "cookbook-directory": "recipes", "shell-path": "/bin/bash", "master-slave-base-port": 11000, "group-replication-base-port": 12000, "group-replication-sp-base-port": 13000, "fan-in-replication-base-port": 14000, "all-masters-replication-base-port": 15000, "multiple-base-port": 16000, "pxc-base-port": 18000, "ndb-base-port": 19000, "ndb-cluster-port": 20000, "group-port-delta": 125, "mysqlx-port-delta": 10000, "admin-port-delta": 11000, "master-name": "master", "master-abbr": "m", "node-prefix": "node", "slave-prefix": "slave", "slave-abbr": "s", "sandbox-prefix": "msb_", "imported-sandbox-prefix": "imp_msb_", "master-slave-prefix": "rsandbox_", "group-prefix": "group_msb_", "group-sp-prefix": "group_sp_msb_", "multiple-prefix": "multi_msb_", "fan-in-prefix": "fan_in_msb_", "all-masters-prefix": "all_masters_msb_", "reserved-ports": [ 1186, 3306, 33060, 33062 ], "remote-repository": "https://raw.githubusercontent.com/datacharmer/mysql-docker-minimal/master/dbdata", "remote-index-file": "available.json", "remote-completion-url": "https://raw.githubusercontent.com/datacharmer/dbdeployer/master/docs/dbdeployer_completion.sh", "remote-tarball-url": "https://raw.githubusercontent.com/datacharmer/dbdeployer/master/downloads/tarball_list.json", "pxc-prefix": "pxc_msb_", "ndb-prefix": "ndb_msb_", "timestamp": "Thu Nov 21 15:58:56 CST 2019" }
四、基本使用
在使用之前我们需要先下载好对应操作系统的 MySQL 软件包,dbdeployer 软件提供了下载 MySQL 软件的管理命令,我们可通过 dbdeployer 工具下载,也可自行下载 MySQL 软件包,我们将下载的软件放置在之前已创建好的
~/sandboxes/mysql_package目录下。以下以 MacOS 系统为例,Linux 类似。
1. 使用 dbdeployer 下载 MySQL
## 查看dbdeployer工具支持下载的MySQL软件包 shell> dbdeployer downloads list Available tarballs () name OS version flavor size minimal --------------------------------------------------- -------- --------- ------------- -------- --------- tidb-master-darwin-amd64.tar.gz Darwin3.0.0 tidb 26 MB mysql-5.7.26-macos10.14-x86_64.tar.gz Darwin5.7.26 mysql 337 MB mysql-8.0.16-macos10.14-x86_64.tar.gz Darwin8.0.16 mysql 153 MB mysql-8.0.15-macos10.14-x86_64.tar.gz Darwin8.0.15 mysql 139 MB mysql-5.7.25-macos10.14-x86_64.tar.gz Darwin5.7.25 mysql 337 MB mysql-5.6.41-macos10.13-x86_64.tar.gz Darwin5.6.41 mysql 176 MB mysql-5.5.53-osx10.9-x86_64.tar.gz Darwin5.5.53 mysql 114 MB mysql-5.1.73-osx10.6-x86_64.tar.gz Darwin5.1.73 mysql 82 MB mysql-5.0.96-osx10.5-x86_64.tar.gz Darwin5.0.96 mysql 61 MB mysql-cluster-8.0.16-dmr-macos10.14-x86_64.tar.gz Darwin8.0.16 ndb 252 MB mysql-8.0.17-macos10.14-x86_64.tar.gz Darwin8.0.17 mysql 155 MB mysql-5.7.27-macos10.14-x86_64.tar.gz Darwin5.7.27 mysql 337 MB mysql-cluster-gpl-7.6.10-macos10.14-x86_64.tar.gz Darwin7.6.10 ndb 482 MB mysql-cluster-8.0.17-rc-macos10.14-x86_64.tar.gz Darwin8.0.17 ndb 255 MB mysql-cluster-gpl-7.6.11-macos10.14-x86_64.tar.gz Darwin7.6.11 ndb 482 MB mysql-shell-8.0.17-macos10.14-x86-64bit.tar.gz Darwin8.0.17 mysql-shell 17 MB mysql-5.7.28-macos10.14-x86_64.tar.gz Darwin5.7.28 mysql 374 MB mysql-8.0.18-macos10.14-x86_64.tar.gz Darwin8.0.18 mysql 166 MB ## 下载并解压指定软件包 shell> cd sandboxes/mysql_package shell> dbdeployer downloads get-unpack mysql-8.0.17-macos10.14-x86_64.tar.gz
2. 自行下载 MySQL
访问 https://downloads.mysql.com/a... 可下载各不同版本的 MySQL
## 下载并解压MySQL软件包 shell> cd sandboxes/mysql_package shell> wget https://downloads.mysql.com/archives/get/file/mysql-8.0.17-macos10.14-x86_64.tar.gz shell> dbdeployer unpack mysql-8.0.17-macos10.14-x86_64.tar.gz
3. 快速部署实例
以下示例简单使用几条命令实现各种不同架构的 MySQL 部署,详细使用方式可查看文末 dbdeployer 文档链接。
## 部署一个单节点的MySQL,开启GTID并指定字符集 ## GTID和字符等参数也可在部署完成后在MySQL配置文件中指定 ## 注意:部署的数据库默认自动运行,可以指定 --skip-start参数只初始化但不启动 shell> dbdeployer deploy single 8.0.17 --gtid --my-cnf-options="character_set_server=utf8mb4" ## 部署一个主从复制MySQL(默认初始化3个节点,一主两从) shell> dbdeployer deploy replication 8.0.17 --repl-crash-safe --gtid --my-cnf-options="character_set_server=utf8mb4" ## 部署一个单主模式的MGR(默认初始化3个节点) shell> dbdeployer deploy --topology=group replication 8.0.17 --single-primary ## 部署一个多主模式的MGR(默认初始化3个节点) shell> dbdeployer deploy --topology=all-masters replication 8.0.17
4. 实例组操作
一键部署完成后会在
$HOME/sandboxes目录下生成各实例组对应的数据目录,该目录包含以下信息(部分信息)
- 一键启停该组所有实例的脚本
- 一键登录数据库脚本
- 一键重置该组所有实例的脚本(清除所有测试数据并重新初始化成全新的主从)
- 主从实例的数据目录(主库为 master,从库分别为 node1、node2 依次递增)
各实例的配置文件
默认用户授权命令
单独启停实例命令
binlog、relaylog 解析命令
使用示例
## 查看该组所有实例状态 shell> cd ~/sandboxes/rsandbox_8_0_17 shell> ./status_all REPLICATION /Users/yuzhenxing/sandboxes/rsandbox_8_0_17 master : master on - port 20718(20718) node1 : node1 on - port 20719(20719) node2 : node2 on - port 20720(20720) ## 一键重启该组所有实例 shell> ./restart_all stop /Users/yuzhenxing/sandboxes/rsandbox_8_0_17/master stop /Users/yuzhenxing/sandboxes/rsandbox_8_0_17/node1 stop /Users/yuzhenxing/sandboxes/rsandbox_8_0_17/node2 executing 'start' on master . sandbox server started executing 'start' on slave 1 . sandbox server started executing 'start' on slave 2 . sandbox server started ## 单独重启该组某一实例 shell> cd ~/sandboxes/rsandbox_8_0_17/master shell> ./restart ## 登录指定实例 shell> ./use
五、dbdeployer 常用管理命令
以下是使用 dbdeployer 过程中总结的常用命令,详细使用方式可查看文末 dbdeployer 文档链接。
## 查看 dbdeployer 支持的各类数据库版本及版本特性(输出信息过长或过多,已省略输出结果) shell> dbdeployer admin capabilities shell> dbdeployer admin capabilities percona shell> dbdeployer admin capabilities mysql ## 使用 dbdeployer 查看指定版本 MySQL 的基本信息 shell> dbdeployer downloads get-by-version 5.7 --newest --dry-run Name: mysql-5.7.28-macos10.14-x86_64.tar.gz Short version: 5.7 Version: 5.7.28 Flavor: mysql OS: Darwin URL: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-macos10.14-x86_64.tar.gz Checksum: MD5: 00c2cabb06d8573b5b52d3dd1576731e Size: 374 MB ## 查看当前已安装的所有 MySQL 基本信息 ## 包括架构类型、版本、端口等等(输出信息过长或过多,已省略输出结果) shell> dbdeployer sandboxes --full-info ## 查看各组 MySQL 的运行情况 shell> dbdeployer global status MULTIPLE /Users/yuzhenxing/sandboxes/all_masters_msb_8_0_17 node1 : node1 on - port 23818(23818) node2 : node2 on - port 23819(23819) node3 : node3 on - port 23820(23820) MULTIPLE /Users/yuzhenxing/sandboxes/group_sp_msb_8_0_17 node1 : node1 off - (22718) node2 : node2 off - (22719) node3 : node3 off - (22720) ## 批量停止所有运行的 MySQL (输出信息过长或过多,已省略输出结果) shell> dbdeployer global stop ## 删除已部署的 MySQL 实例 ## 如正在运行则会先停止,后清除实例相关目录 shell> dbdeployer delete msb_8_0_17 ## 可对实例加锁,防止误删除 ## dbdeployer sandboxes --full-info 命令可查的到哪组实例已加锁 shell> dbdeployer admin lock group_sp_msb_8_0_17 shell> dbdeployer delete group_sp_msb_8_0_17 shell> dbdeployer admin unlock group_sp_msb_8_0_17 shell> dbdeployer sandboxes --full-info
其他更多的 dbdeployer 使用和管理命令,可执行 dbdeployer 或dbdeployer --help 进行查看,更详尽的使用方式和使用示例可查看文末的 dbdeployer 官方手册链接。
六、相关链接
- dbdeployer 官方手册
- MySQL 各历史版本下载链接
- dbdeployer 的功能特性
以上就是《技术分享 | 如何使用 dbdeployer 快速搭建 MySQL 测试环境》的详细内容,更多关于mysql的资料请关注golang学习网公众号!
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
-
214 收藏
-
155 收藏
-
485 收藏
-
436 收藏
-
125 收藏
-
174 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习