Skip to content

Latest commit

 

History

12 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Vue Wails License Platform

GitHub Stars Gitee Stars GitHub Release

DBBridge — 数据库迁移工具

填好连接信息,点击"开始迁移",5 分钟搞定异构数据库迁移。

无需安装 JDK,无需写配置文件,无需命令行操作——双击运行,所见即所得


📖 这是什么?

DBBridge 是一款开源、免费、零依赖的数据库迁移与 SQL 转换工具。

你有没有遇到过这些场景?

痛点场景 传统方式 用 DBBridge
客户给的 MySQL 数据库,你本地用 PostgreSQL 手工改 SQL,半天搞定 填两个连接信息,一键迁移
拿到一个 .sql 备份文件,导入报语法错误 逐行排查改语法 解析 SQL 文件,自动方言转换
测试环境要搭和生产库一样的表结构 手工建表,容易漏 直连源库,一键迁移结构
信创项目:MySQL → 达梦/金仓/openGauss 找厂商工具或手工改 原生支持国产库迁移

一句话总结:DBBridge 让数据从一个数据库迁移到另一个数据库变得简单。


✨ 核心特性

🎯 极致易用 — 5 分钟上手

  • 图形化界面:不是命令行工具,是漂亮桌面 App
  • 三步迁移:填连接 → 选表 → 点迁移
  • 零配置:不需要写 YAML/JSON 配置文件
  • 实时进度:迁移进度条 + 详细日志

🔌 零依赖 — 单文件即用

  • 不依赖 JDK(不像 DBeaver/Flyway/Liquibase)
  • 不依赖 Python(不像 pgloader)
  • 不依赖运行时(不像 DBSwitch 需要部署服务端 + JVM)
  • 单文件 < 30MB,下载双击即可运行

🗄️ 多数据库支持

数据库 作为源库 作为目标库
MySQL (5.7/8.0+)
PostgreSQL (14/16/17+)
SQLite (3.x)
MariaDB
OceanBase
TiDB
openGauss
达梦 DM8
人大金仓 KingbaseES
CockroachDB

以上 10 种数据库可以任意两两互转(N × N 组合)。

🛡️ 安全可靠

  • 迁移前自动备份:目标库的同名表自动重命名为 _bak_ 前缀
  • 一键回滚:迁移不满意?一键从备份恢复
  • 事务保障:每批数据写入用事务包裹,失败可回滚
  • 参数化查询:防止 SQL 注入
  • 日志脱敏:密码不出现在任何日志中

📊 迁移报告

  • 成功/失败表数统计
  • 每表行数对比
  • 耗时统计
  • 失败原因明细
  • 迁移历史记录(本地 SQLite 持久化)

🚀 快速开始

方式一:Windows 用户(最简单)

  1. Releases 下载 dbbridge-1.0.0-windows-amd64.zip
  2. 解压后双击 dbbridge.exe
  3. 填写源库和目标库的连接信息
  4. 点击"开始迁移"——完成!

🎉 不需要安装 JDK、Python 等运行时依赖。

⚠️ Windows 用户注意:DBBridge 是基于 WebView2 的桌面应用。Windows 10/11 通常已内置 WebView2 运行时, 如果双击后闪退或报错,请安装 WebView2 运行时 后重试。

方式二:macOS 用户

  1. Releases 下载 macOS 版本
  2. 解压后拖入"应用程序"文件夹
  3. 打开运行
  4. 同上,填连接信息 → 迁移

方式三:Linux 服务器部署(下载发布包安装)

最简单的方式——下载发布包,解压,运行 install.sh:

# 1. 下载发布包(x86_64 服务器)
wget https://github.com/suoten/dbbridge/releases/latest/download/dbbridge-1.0.0-linux-amd64.zip

# ARM64 服务器(鲲鹏/飞腾/Kylin):
# wget https://github.com/suoten/dbbridge/releases/latest/download/dbbridge-1.0.0-linux-arm64.zip

# 2. 解压
unzip dbbridge-1.0.0-linux-amd64.zip

# 3. 运行安装脚本
sudo bash install.sh

安装完成后:

  • 🌐 Web 界面:http://服务器IP:8989
  • 📂 安装目录:/opt/dbbridge
  • 📋 日志文件:/var/log/dbbridge/dbbridge.log
  • 🔄 服务管理:systemctl start/stop/restart dbbridge
  • 🗑️ 卸载:sudo bash /opt/dbbridge/uninstall.shsudo bash uninstall.sh
📖 安装脚本支持的参数(点击展开)
# 指定端口
DBBRIDGE_PORT=9000 sudo bash install.sh

# 卸载
sudo bash uninstall.sh
📖 一行命令安装(curl 管道模式)

如果服务器已有二进制文件,可以一行命令安装:

curl -fsSL <your-download-url>/install.sh | sudo bash

或通过环境变量指定端口:

curl -fsSL <your-download-url>/install.sh | DBBRIDGE_PORT=9000 sudo bash

方式四:宝塔面板部署 + 反向代理

如果你使用宝塔面板管理服务器,DBBridge 提供了一键反向代理配置脚本:

# 1. 先安装 DBBridge(见方式三)

# 2. 运行宝塔反向代理配置脚本
sudo bash /opt/dbbridge/baota-proxy.sh

脚本会引导你完成:

  1. 输入绑定域名(如 db.yourdomain.com
  2. 确认 DBBridge 端口(默认 8989)
  3. 自动写入 Nginx 反向代理配置
  4. 自动重载 Nginx
📖 手动配置宝塔反向代理(不想用脚本)
  1. 宝塔面板 → 网站 → 添加站点

    • 域名:db.yourdomain.com
    • 类型:纯静态
  2. 站点设置 → 配置文件,在 server { } 块中添加:

location / {
    proxy_pass http://127.0.0.1:8989;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # WebSocket 支持(迁移进度实时推送)
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    # 超时设置(大表迁移耗时较长)
    proxy_connect_timeout 60s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;

    proxy_buffering off;
    proxy_cache off;
}
  1. 保存 → 重启 Nginx

  2. (可选)申请 SSL 证书:站点设置 → SSL → Let's Encrypt → 申请

完整的 Nginx 配置模板见 deploy/baota-nginx.conf


🖥️ 打包发布(make-release.ps1)

如果你是开发者,需要自行打包发布多平台版本,使用 make-release.ps1 一键搞定:

# 默认版本号 1.0.0
powershell -ExecutionPolicy Bypass -File make-release.ps1

# 指定版本号
powershell -ExecutionPolicy Bypass -File make-release.ps1 -Version 1.2.0

脚本会自动完成:

  1. 构建前端(Vue3 → frontend/dist/
  2. 编译多平台二进制
    • Linux amd64/arm64:CGO_ENABLED=0 纯 Go 交叉编译(headless Web 模式,无需 GCC)
    • Windows amd64:wails build(完整桌面应用,含 WebView2 前端资源)
  3. 打包发布 zip
    • Linux 包:二进制 + install.sh + uninstall.sh + baota-proxy.sh + baota-nginx.conf + README.md
    • Windows 包:DBBridge.exe + README.md + appicon.png
  4. 生成 SHA256 校验文件

产物在 release/ 目录下:

release/
├── dbbridge-1.0.0-linux-amd64.zip
├── dbbridge-1.0.0-linux-arm64.zip
├── dbbridge-1.0.0-windows-amd64.zip
└── checksums.txt

为什么 Linux 不需要 CGO? DBBridge 使用 modernc.org/sqlite(纯 Go 实现的 SQLite), 不依赖任何 C 库,因此 Linux 版可以 CGO_ENABLED=0 交叉编译,无需安装 GCC。

Windows 版为什么用 wails build? Wails 桌面应用依赖 WebView2 运行时, wails build 会生成包含前端资源的完整桌面应用。用户机器需要安装 WebView2 运行时 (Windows 10/11 通常已内置,若未安装可从微软官网下载)。


🔧 从源码构建(开发模式)

如果你想从源码编译(开发者或安全审查):

前置要求

工具 版本 说明
Go 1.21+ 后端语言
Node.js 18+ 前端构建
Wails CLI v2.10+ 桌面框架(开发模式用)

无需 GCC/CMake — DBBridge 使用纯 Go SQLite,不需要 CGO 编译。

开发模式

# 1. 克隆仓库
git clone https://github.com/suoten/dbbridge.git
cd dbbridge

# 2. 安装 Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest

# 3. 开发模式(热重载)
wails dev

# 4. 构建桌面 GUI
wails build

纯 Go 编译(Linux 服务器部署用)

# 前端
 cd frontend && npm install && npm run build && cd ..

# Linux amd64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o dbbridge .

# Linux arm64 (信创/ARM 服务器)
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags "-s -w" -o dbbridge .

⚠️ Windows 桌面版请使用 wails build -platform windows,不要直接 go buildgo build 编译的 exe 缺少 Wails 桌面运行时初始化,可能导致无法启动。

📖 使用 Wails 构建各平台桌面版
# Windows
wails build -platform windows

# macOS (Universal Binary)
wails build -platform darwin/universal

# Linux (amd64)
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 wails build -platform linux/amd64

# Linux (arm64 - 信创/ARM 服务器)
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 wails build -platform linux/arm64

📱 使用指南(图文版)

第一步:配置源数据库

打开 DBBridge,在左侧"配置连接"页面:

  1. 选择数据库类型:MySQL / PostgreSQL / SQLite / ...
  2. 填写连接信息
    • 主机地址(如 127.0.0.1
    • 端口(如 MySQL 默认 3306
    • 用户名 / 密码
    • 数据库名
  3. 点击"测试连接":确保能连上

第二步:选择要迁移的表

  1. 连接成功后,自动加载表列表
  2. 勾选要迁移的表(默认全选)
  3. 可用搜索框快速过滤

第三步:配置目标数据库

  1. 同样选择数据库类型 + 填写连接信息
  2. 测试连接

第四步:配置迁移选项

选项 说明 建议
批量大小 每批写入的行数 5000(默认)
并发表数 同时迁移几张表 4(默认)
仅迁移结构 不迁移数据 适合搭测试环境
仅迁移数据 不迁移表结构 目标表已存在时
目标表已存在时删除 先 DROP 再建 ✅ 推荐
迁移前备份 自动备份目标表 ✅ 推荐
自动回滚 失败时自动恢复 ✅ 推荐

第五步:点击"开始迁移"

  • 实时进度条
  • 详细日志
  • 迁移完成后查看报告
  • 如果不满意 → "备份管理"页面一键回滚

📂 项目结构

DBBridge/
├── app.go                      # Wails 绑定层(前端调用入口)
├── main.go                     # 程序入口
├── go.mod                      # Go 模块定义
├── wails.json                  # Wails 配置
├── make-release.ps1            # 一键打包发布脚本(多平台二进制 + zip)
├── install.sh                  # 源码编译安装脚本(自动安装 Go/Node/Wails 并编译)
├── deploy/                     # 部署相关配置(打包到发布 zip 中)
│   ├── install.sh              # 发布包安装脚本(从同目录复制二进制)
│   ├── uninstall.sh            # 卸载脚本
│   ├── baota-nginx.conf        # 宝塔 Nginx 反向代理模板
│   ├── baota-proxy.sh          # 宝塔反向代理自动配置脚本
│   └── dbbridge.service        # systemd 服务模板
├── internal/                   # 后端核心逻辑
│   ├── adapter/                # 数据库适配器(每种数据库一个目录)
│   │   ├── mysql/
│   │   ├── postgres/
│   │   ├── sqlite/
│   │   ├── mariadb/
│   │   ├── oceanbase/
│   │   ├── tidb/
│   │   ├── opengauss/
│   │   ├── dameng/
│   │   ├── kingbase/
│   │   ├── cockroachdb/
│   │   ├── mysqlcompat/        # MySQL 兼容协议库公共逻辑
│   │   └── pgcompat/           # PG 兼容协议库公共逻辑
│   ├── converter/              # DDL/数据转换器
│   ├── orchestrator/           # 迁移编排器(调度核心)
│   ├── migrator/               # 迁移执行器
│   ├── parser/                 # SQL 文件解析器
│   ├── history/                # 迁移历史记录
│   ├── service/                # 业务服务层
│   ├── typeconv/               # 类型映射
│   ├── logger/                 # 日志
│   ├── progress/               # 进度追踪
│   └── config/                 # 配置管理
├── pkg/                        # 公开包(适配器接口 + 类型定义)
│   ├── adapter.go
│   └── types.go
├── frontend/                   # Vue3 前端
│   ├── src/
│   │   ├── App.vue            # 主界面
│   │   └── components/         # 组件
│   │       ├── ConnectionForm.vue
│   │       ├── ProgressPanel.vue
│   │       ├── MigrationReport.vue
│   │       ├── BackupManager.vue
│   │       └── MigrationHistory.vue
│   ├── package.json
│   └── vite.config.ts
└── build/                      # 构建产物
    └── windows/
        ├── icon.ico
        └── installer/          # NSIS 安装包

🔧 服务管理命令

部署在 Linux 服务器后,使用以下命令管理 DBBridge:

# 启动
sudo systemctl start dbbridge

# 停止
sudo systemctl stop dbbridge

# 重启
sudo systemctl restart dbbridge

# 查看运行状态
sudo systemctl status dbbridge

# 查看实时日志
sudo journalctl -u dbbridge -f

# 或查看日志文件
tail -f /var/log/dbbridge/dbbridge.log

# 开机自启
sudo systemctl enable dbbridge

# 关闭开机自启
sudo systemctl disable dbbridge

❓ 常见问题

Q: Windows 上运行提示"缺少 DLL"、闪退或"不是有效的 Win32 程序"?

DBBridge 是基于 WebView2 的桌面应用,需要 WebView2 运行时

  1. Windows 10/11 通常已内置 WebView2,大多数用户无需额外安装
  2. 如果双击后闪退,请下载安装 WebView2 运行时
  3. 确保下载的是 Windows 版本的 DBBridge.exe(非 Linux 版)
  4. 如果仍报错,可能系统缺少 Visual C++ 运行库,请安装 VC++ 运行库
Q: macOS 上提示"无法验证开发者"或"已损坏"?

打开"系统设置 → 隐私与安全性",在"安全性"部分点击"仍要打开"。 或在终端执行:

xattr -cr /Applications/DBBridge.app
Q: Linux 安装脚本报错"未找到二进制文件"?

请确保下载的是完整发布包(zip),解压后 install.shdbbridge 二进制在同一目录。

# 正确流程
wget <download-url>/dbbridge-1.0.0-linux-amd64.zip
unzip dbbridge-1.0.0-linux-amd64.zip
cd dbbridge-1.0.0-linux-amd64
sudo bash install.sh

如果你是从源码编译安装,请使用项目根目录的 install.sh(它会自动安装 Go/Node 并编译)。

Q: 迁移大表很慢怎么办?

调整迁移选项:

  1. 增大批量大小(BatchSize):如 10000-50000
  2. 增加并发表数(Concurrency):如 8
  3. 关闭"迁移前备份"(如果确认不需要回滚)
  4. 确保源库和目标库网络通畅
Q: 宝塔反代后访问显示 502 Bad Gateway?
  1. 检查 DBBridge 服务是否运行:systemctl status dbbridge
  2. 检查端口是否一致:Nginx 配置中的 proxy_pass 端口要和 DBBridge 运行端口一致
  3. 检查防火墙:ufw allow 8989/tcpfirewall-cmd --add-port=8989/tcp --permanent
  4. 查看日志:tail -f /var/log/dbbridge/dbbridge.log
Q: 连接国产数据库(达梦/金仓)失败?

国产数据库需要额外配置:

  • 达梦 DM8:确保 dm.iniPORT = 5236,用户有查询权限
  • 人大金仓:默认端口 54321,确保监听非 localhost
  • 如果持续失败,请在 Issue 中附带数据库版本和错误信息反馈
Q: 迁移中断了,数据会丢吗?

不会。如果开启了"迁移前备份":

  1. 目标库的同名表已自动备份为 _bak_ 前缀
  2. 已成功写入的表数据保留在目标库
  3. 失败的表可通过"备份管理"页面恢复
  4. 重新迁移时,已存在的表可勾选"删除已存在"选项重新写入

🆚 与其他工具对比

对比维度 DBBridge DBSwitch Navicat DBeaver DataX
单文件零依赖 ❌ 需 JVM ❌ 安装包大 ❌ 需 JDK ❌ 需 JDK
图形界面 ✅ 桌面 ✅ Web ✅ 桌面 ✅ 桌面
跨数据库迁移 ✅ 10 种 ✅ 20+ 有限支持 ❌ 不支持 有限支持
SQL 文件输入 ✅ 核心特性 仅执行
国产数据库 ✅ 重点 有限 有限 有限
备份与回滚
学习成本 ⭐ 极低
开源免费 ✅ AGPLv3 ✅ GPLv3

🤝 参与贡献

欢迎提交 Issue 和 PR!

  • Bug 反馈提交 Issue
  • 功能建议提交 Issue
  • 代码贡献:Fork → 开发分支 → 提交 PR
  • 适配器开发:参考 internal/adapter/mysql/adapter.go 实现新的数据库适配器

开发环境搭建

# 克隆代码
git clone https://github.com/suoten/dbbridge.git
cd dbbridge

# 安装 Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest

# 开发模式(热重载)
wails dev

# 构建桌面发布版
wails build

# 打包多平台发布包(Windows PowerShell)
powershell -ExecutionPolicy Bypass -File make-release.ps1 -Version 0.1.0

📄 开源协议

本项目采用 AGPLv3 协议开源。

  • ✅ 个人使用、学习、研究:免费
  • ✅ 企业内部使用:免费
  • ✅ 社区贡献:欢迎
  • ⚠️ 商业分发/SaaS 服务:需联系商业授权

📞 联系我们


🙏 致谢


数据迁移,一键搞定

让数据库之间的数据流通变得简单

⭐ 如果 DBBridge 帮到了你,给个 Star 支持一下!

About

Description: 开源、免费、零依赖的数据库迁移与SQL转换工具。支持 MySQL/PostgreSQL/SQLite/OceanBase/TiDB/达梦/金仓 等 10 种数据库互转。单文件 < 30MB,双击即用。

Topics

Resources

Stars

8 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages