文章

🐬 使用 dbdeployer 快速搭建 MySQL 测试环境

使用 dbdeployer 轻松部署 MySQL 单实例、主从复制、组复制和 NDB 集群等测试环境

🐬 使用 dbdeployer 快速搭建 MySQL 测试环境

在开发过程中,我们经常需要搭建 MySQL 测试环境。传统的方式可能比较繁琐,而 dbdeployer 工具可以帮助我们快速部署各种 MySQL 环境,包括单实例、主从复制、组复制和 NDB 集群等。


🚀 安装 dbdeployer

下载并安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 下载最新版本
cd ~
wget https://github.com/datacharmer/dbdeployer/releases/download/v1.72.0/dbdeployer-1.72.0-docs.linux.tar.gz

# 解压文件
tar -zxvf dbdeployer-1.72.0-docs.linux.tar.gz

# 赋予执行权限
chmod +x dbdeployer-1.72.0-docs.linux

# 移动到系统可执行目录
sudo mv dbdeployer-1.72.0-docs.linux /usr/local/bin/dbdeployer

# 验证安装
dbdeployer --version

初始化环境

1
2
# 创建必要目录并下载最新的 MySQL 二进制文件
dbdeployer init

📦 管理 MySQL 包

查看可用的 MySQL 版本

1
2
# 列出支持下载的软件包
dbdeployer downloads list

下载并解压指定版本

1
2
3
4
5
# 以 MySQL 8.0.31 为例
dbdeployer downloads get-unpack mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz

# 检查已安装的 MySQL 包
dbdeployer versions

💫 部署 MySQL 实例

单实例部署

1
2
# 部署 MySQL 8.0.31 单实例
dbdeployer deploy single 8.0.31

查看部署帮助

1
2
3
4
5
# 查看部署选项
dbdeployer deploy -h

# 查看单实例部署帮助
dbdeployer usage single

⚙️ 配置说明

目录结构

  • MySQL 实例存储位置:~/opt/mysql
  • 启动配置目录:~/sandboxes

实例管理

1
2
3
4
5
# 启动实例
~/sandboxes/msb_8_0_31/start

# 停止实例
~/sandboxes/msb_8_0_31/stop

默认账户信息

用户名 密码 权限
root@localhost msandbox ALL PRIVILEGES with GRANT OPTION
msandbox@localhost msandbox ALL PRIVILEGES
rsandbox@127.% rsandbox REPLICATION SLAVE

本地登录

1
~/opt/mysql/8.0.31/bin/mysql -uroot -pmsandbox -S /tmp/mysql_sandbox8031.sock

🌍 配置远程访问

  1. 修改配置文件 ```bash

    编辑 MySQL 配置

    vi ~/sandboxes/msb_8_0_31/my.sandbox.cnf

修改绑定地址

bind-address = 0.0.0.0

1
2
3
4
5
6
7
8
9
2. 授权远程访问
```sql
-- 登录 MySQL 后执行
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

📝 小贴士

  • FLUSH PRIVILEGES 命令用于重新加载权限表,使修改立即生效
  • 修改权限后使用 FLUSH PRIVILEGES 可以避免重启服务器
  • 生产环境建议限制特定 IP 访问,而不是使用 '%'
  • 定期备份数据库配置和数据很重要

通过 dbdeployer,我们可以在几分钟内搭建好各种 MySQL 测试环境,大大提高了开发和测试效率。这个工具特别适合需要频繁部署不同版本 MySQL 实例的开发测试场景。


本文由作者按照 CC BY 4.0 进行授权