db-branch
在自有服务器上为 MySQL 和 PostgreSQL 提供即时数据库分支。
测试一次迁移、让 AI agent 自由操作,或为每个 pull request 提供一份独立的数据库副本。db-branch 可在数秒内为大型数据库创建一个写时复制分支,且无需复制任何数据。随意破坏、重置、丢弃。基于 ZFS clone 构建,自托管,Apache-2.0。
状态:Beta。db-branch 目前已经可用,但在 1.0 之前,API 和命令行细节仍可能变化。它是一个从零开始构建的独立开源项目。

试用
- 在浏览器中,0 分钟。一个实时控制台演示完全在页面内运行(不会创建任何真实内容):https://demo.db-branch.com/
- 在 Mac 或 Windows 机器上,约 2 分钟。db-branch 需要 Linux 和 ZFS,因此请使用 Multipass 在 Ubuntu VM 中运行它。一条命令即可创建 VM、安装 db-branch、在基于文件的 ZFS pool 上初始化它,并加载一个小型示例基础库 shop(MySQL 8.4):multipass launch 24.04 --name db-branch-eval --memory 4G --disk 30G --timeout 900 \ --cloud-init https://raw.githubusercontent.com/db-branch/db-branch/main/scripts/eval-cloud-init.yaml multipass exec db-branch-eval -- cloud-init status --wait # 等待安装完成(约两分钟) multipass exec db-branch-eval -- cat /etc/motd # 控制台 URL 和登录信息(admin / admin),或查看哪里失败了 multipass shell db-branch-eval # 然后:sudo db-branch branch create try --base shop --ttl 1h --record 在 Windows(PowerShell 或 cmd)上,将 multipass launch 命令放在一行,并去掉 \:multipass launch 24.04 --name db-branch-eval --memory 4G --disk 30G --timeout 900 --cloud-init https://raw.githubusercontent.com/db-branch/db-branch/main/scripts/eval-cloud-init.yaml history 模块已开启,付费模块可在没有 key 的情况下运行 30 天。--record 会记录一个分支,使其可以恢复到任意时间点。pool 是一个文件,因此速度较慢,不适合存放真实数据。首个 admin 密码是 admin;控制台会在首次登录时要求设置新密码。在 Apple Silicon(以及其他 arm64 机器)上,安装过程会为 MySQL 下载约 800 MB,而在 Intel 上为 80 MB,因为 Oracle 没有为 arm64 提供精简构建。--timeout 900 可避免 launch 在慢速连接下放弃。如果安装失败,/etc/motd 会说明,VM 中的 sudo tail -n 30 /var/log/cloud-init-output.log 会显示原因。使用 multipass delete --purge db-branch-eval 删除 VM。
在 Mac 或 Windows 机器上,约 2 分钟。db-branch 需要 Linux 和 ZFS,因此请使用 Multipass 在 Ubuntu VM 中运行它。一条命令即可创建 VM、安装 db-branch、在基于文件的 ZFS pool 上初始化它,并加载一个小型示例基础库 shop(MySQL 8.4):
multipass launch 24.04 --name db-branch-eval --memory 4G --disk 30G --timeout 900 \
--cloud-init https://raw.githubusercontent.com/db-branch/db-branch/main/scripts/eval-cloud-init.yaml
multipass exec db-branch-eval -- cloud-init status --wait # 等待安装完成(约两分钟)
multipass exec db-branch-eval -- cat /etc/motd # 控制台 URL 和登录信息(admin / admin),或查看哪里失败了
multipass shell db-branch-eval # 然后:sudo db-branch branch create try --base shop --ttl 1h --record
在 Windows(PowerShell 或 cmd)上,将 multipass launch 命令放在一行,并去掉 \:
multipass launch 24.04 --name db-branch-eval --memory 4G --disk 30G --timeout 900 --cloud-init https://raw.githubusercontent.com/db-branch/db-branch/main/scripts/eval-cloud-init.yaml
- history 模块已开启,付费模块可在没有 key 的情况下运行 30 天。--record 会记录一个分支,使其可以恢复到任意时间点。
- pool 是一个文件,因此速度较慢,不适合存放真实数据。首个 admin 密码是 admin;控制台会在首次登录时要求设置新密码。
- 在 Apple Silicon(以及其他 arm64 机器)上,安装过程会为 MySQL 下载约 800 MB,而 Intel 上只有 80 MB,因为 Oracle 没有为 arm64 提供最小化构建。--timeout 900 可以避免 launch 在慢速连接上中途放弃。
- 如果安装失败,/etc/motd 会给出提示,在 VM 里执行 sudo tail -n 30 /var/log/cloud-init-output.log 可以看到原因。
- 用 multipass delete --purge db-branch-eval 删除该 VM。
- 在你自己的 Ubuntu 服务器上安装。参见 Install。
使用场景
- AI agent 沙箱。内置的 MCP 服务器让 LLM agent 创建分支、在分支上执行有风险的查询或迁移,然后删除该分支,生产数据始终不会被触碰。
- 每个 pull request 一个数据库。每次 CI 运行或每个 PR 都拿到一份大型数据库的独立副本,几秒内就绪,不再需要时由 --ttl 删除。
- 版本升级检查。先在一个分支上做一次大版本升级(例如 MySQL 8.0 到 8.4),用 branch upgrade --check-only 看看会撞上什么问题,然后再动 base。
功能
- 秒级分支。在我们自己的 3 节点测试集群上,一个 PostgreSQL 分支约 0.5 秒就绪,MySQL 分支约 3 秒,创建时复制 0 字节(写时复制)。
- 重置与过期。branch reset 把分支恢复到创建时的状态;--ttl 会自动删除分支。
- 检查点。branch checkpoint 瞬间保存运行中分支的状态;branch restore 把它放回去。还原会替换当前状态,你已有的每个检查点都仍然可以还原。
- 按分支升级。branch upgrade 把单个分支迁移到更新的 MySQL 或 PostgreSQL 版本,而 base 和其他分支保持不动。升级前会先保存一个检查点,升级失败会自动回滚。
- MySQL 和 PostgreSQL,多个版本并存。引擎运行时按版本安装,可以并存。
- 处处同一套接口。CLI、REST API、Web 控制台和 MCP 服务器(让 LLM agent 能创建并查询自己的分支)都使用同一套 API。
- 单节点或集群。由 VM 组成的 Raft 集群,可选 ProxySQL 路由,让应用始终只用一个地址。
Web 控制台


安装
要求:Ubuntu 24.04 LTS 或 26.04 LTS,以及一个 ZFS 池(zfsutils-linux 包会作为依赖安装)。
curl -fsSL https://apt.db-branch.com/db-branch.gpg | sudo tee /usr/share/keyrings/db-branch.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/db-branch.gpg] https://apt.db-branch.com stable main" | sudo tee /etc/apt/sources.list.d/db-branch.list
sudo apt update && sudo apt install db-branch
sudo db-branch init --pool <zpool>
仓库签名密钥指纹是 3F404C4E5D49FA653F8385692C6E89E341D4D7A5。db-branch init 会打印一次初始管理员密码。
第一个分支
db-branch runtime install [email protected] # a database engine version
db-branch base create prod --runtime [email protected] --dump prod.sql.gz # a base: your data, loaded once
db-branch branch create feature-x --base prod --ttl 72h # a branch: instant, copy-on-write
db-branch branch dsn feature-x # connection URL (includes the password)
db-branch branch checkpoint feature-x --name before-migration # save the state (instant)
db-branch branch restore feature-x before-migration # go back to the saved state
db-branch branch reset feature-x # discard every change
db-branch branch delete feature-x # remove it
MySQL 也是如此,例如 [email protected]。用 db-branch runtime available 列出可安装的版本。要在某个 MySQL 分支上尝试版本升级:
db-branch branch upgrade feature-x --runtime [email protected] --check-only # what would the upgrade run into?
db-branch branch upgrade feature-x --runtime [email protected] # move this branch only; a checkpoint is saved first
工作原理
一个 base 是一个 ZFS 数据集,里面存放着已加载的数据库。一个分支是某个 base 快照的 ZFS 克隆,因此创建分支不会复制任何数据,并且每个分支都在自己的端口上运行自己的数据库服务器。可选地,ProxySQL 会按用户名(或按 /*db_branch='name'*/ 查询注释)将客户端连接路由到正确的分支。多个节点组成一个 Raft 集群,共享 base、分支、设置和用户。
版本
- Core(本仓库),Apache-2.0:分支、base、运行时、集群、CLI、API、Web 控制台、MCP、监控、通知、带限制的匿名(免登录)分支、定时 base 刷新、集群状态备份。
- 同一 apt 仓库中的免费模块:proxysql、greenmask、greenmask-mysql、anon(路由与数据脱敏)。
- 付费模块(认证/SSO、审计、历史、差异、FSx 存储)是独立的闭源软件包,自托管,并通过许可证密钥启用(按月或按年)。受治理的脱敏工作流计划作为可选加入的 beta 提供,目前尚不属于任何套餐。关于它们使用的扩展点,请参见 docs/modules.md。
db-branch 没有托管版或云版本。
文档
- docs/README.md:设计与参考文档的索引(以日语撰写)
- 英文用户文档:https://db-branch.com/docs/
- 网站:https://db-branch.com (英文),https://db-branch.com/ja/ (日语)
- api/openapi.yaml:机器可读的 REST API 定义
- CHANGELOG.md
贡献、安全、支持
- 欢迎贡献:请参见 CONTRIBUTING.md。提交需要 DCO 签署(git commit -s)。
- 安全问题:请参见 SECURITY.md。请使用私密漏洞报告,不要使用公开 issue。
- 支持:请参见 SUPPORT.md。我们不承诺提供支持;在可能的情况下会阅读 Issues。
- 请遵守行为准则。
许可证
Apache-2.0。请参见 LICENSE 和 NOTICE。
日语
db-branch 是一个用 ZFS 克隆来发放、重置和销毁 MySQL / PostgreSQL 数据库分支的工具。目前处于 Beta 阶段,1.0 之前 API 可能会发生变化。核心部分为 Apache-2.0,付费模块(认证/SSO、审计、历史、差异、FSx 存储)是独立的软件包(闭源、自托管、许可证密钥)。
在 Mac / Windows 上,只需一条 Multipass 命令即可试用:https://db-branch.com/ja/docs/getting-started/#multipass-ですぐ試す 。日语网站是 https://db-branch.com/ja/ ,设计文档位于 docs/(日语)。