数据库 schema 比较工具使你能够识别关系数据库中对象结构的差异,并在多个数据库中同步你的特定对象。它通常用于以下情况:
- 将数据库变更从私有分支合并到团队的主分支
- 在同构数据库中保持 schema 一致性
- 构建新的数据库测试环境
- 根据应用需求将数据库 schema 变更部署到生产环境
- 在服务中断时排除数据库问题
根据 DB-Engines 排名报告,MySQL 是排名第一的开源数据库。在这篇文章中,我们将分析 MySQL 的 5 个 schema 比较工具。
MySQL Workbench
MySQL Workbench 是 Oracle 公司用于 MySQL 开发的官方图形用户界面。它包括 schema 比较和同步工具。它使你能够比较和同步模型、数据库和 SQL 文件之间的 schema。这三种类型可以是目标、源或两者。下图显示源为模型,目标为数据库。
此外,MySQL Workbench允许 您创建一个报告,显示比较对象之间的目录差异,如下图所示。
它可在 Windows、Linux 和 Mac OS X 上使用。
dbForge Schema Compare for MySQL
dbForge Schema Compare for MySQL 是 dbForge 用于 MySQL 数据库开发和管理的旗舰产品。与其他比较工具相比,dbForge Schema Compare for MySQL 有两个明显的优势:
- 快速高效地比较和同步 MySQL 数据库,即使是超大型数据库也不例外。
- 通过 CLI 自动安排你的比较和同步任务
dbforge 仅适用于 Windows。
Liquibase
Liquibase 是一个开源的命令行工具,它可以帮助你使用声明式和命令式方法跟踪、版本控制和部署数据库变更。它提供三种基于 Diff 的命令来发现数据库和数据库快照之间的差异:diff、diff-changelog 和 generate-changelog。更多细节可以参考其官网的数据库检查命令部分。Liquibase 比较功能的最大优势是允许你将其集成到各种工作流中。
Flyway
Flyway 是另一款使用声明式迁移策略进行数据库迁移管理的流行开源工具。除了命令行之外,它还提供免费的云服务 Flyway Hub 和 Flyway Desktop,Flyway Desktop 是 Flyway 之上的一个简单的图形用户界面,没有高级功能。可以通过命令行和 Flyway Desktop 比较和同步数据库的 schema。不过请注意,比较命令仅在企业版中可用。
Bytebase
Bytebase 是一款开源数据库 DevOps 工具,是在整个软件开发生命周期(SDLC)中数据库版的 GitLab/GitHub。它为开发人员和 DBA 提供了一个基于网页的图形化工作空间,使他们能够安全高效地进行协作。Bytebase 拥有强大的比较和同步功能,具有以下独特功能:
从一个数据库比较和同步 schema 到多个数据库
支持从数据库变更历史中选择一个 schema 版本作为源
提供一种用户友好的方式来显示数据库之间的差异
一键完成同步
以上大部分 schema 比较功能都在 Bytebase 免费版中提供。
总结
如果你习惯使用命令行工具,Liquibase 和 Flyway 是很好的选择。如果你更喜欢在同步过程中进行细粒度控制,那么还有 MySQL Workbench 和 dbForge Schema Compare for MySQL 等解决方案。另一方面,如果你需要一个成熟的图形用户界面和更简化的体验来比较、审查和部署数据库 schema,那么Bytebase 将是一个非常合适的选择。
你可以访问官网:https://www.bytebase.com/,免费注册云账号,立即体验 Bytebase。