共计 1461 个字符,预计需要花费 4 分钟才能阅读完成。
MySQL 是世界上最风行的开源关系型数据库管理系统 (RDBMS),然而对 MySQL 数据库做 schema 变更 (schema migration) 还是有点难搞的😅。
本文中,咱们盘点一些好用的针对 MySQL 的开源数据库 schema 迁徙工具,简略聊一下它们提供的不同的性能和体验。
gh-ost
gh-ost 是一个无需触发器的 MySQL 在线 Schema 迁徙工具,它是基于触发器的在线 Schema 迁徙工具 pt-online-schema-change 的继任者。该工具由 GitHub 开发,并在 2016 年作为开源我的项目公布。
gh-ost: GitHub 的 Online Schema Transmogrifier/Transfigurator/Transformer/Thingy
传统的在线 schema 迁徙计划通常波及长时间保护窗口或须要将数据库脱机。gh-ost 旨在通过提供非阻塞和在线模式更改解决方案来解决这些限度。
所有现有的在线模式更改工具操作形式相似:它们创立一个和原始表类似的 ghost (幽灵) 表,将该表迁徙为空,逐渐从原始表复制数据到 ghost 表,同时公布正在进行中的更改(对表利用任何 INSERT, DELETE, UPDATE)到 ghost 表。最初,在失当的时候,他们用 ghost 表替换原始表。gh-ost 应用雷同的模式,然而它不同于所有现有工具,因为它不应用触发器,而是利用 MySQL binlog 捕捉表更改,并异步地将其利用于 ghost 表之上。
Skeema
Skeem 是一个用于 MySQL 和 MariaDB 的 Schama 管理系统。它通过纯 SQL 以申明形式实现对表定义和模式更改的治理。
Skeema 反对基于拉取申请的工作流程,用于模式更改提交、审查和执行。这使团队能够像治理代码更改一样治理 Schema 变更。
Skeema 有一个配套的 SaaS 工具,名为 Skeema Cloud Linter,可主动对模式更改提交和拉取申请进行语法查看。
GitHub 同时应用 Skeema 和 gh-ost 来自动化其 MySQL Schema 迁徙。
Liquibase
Liquibase 能够说是这个畛域中最出名的产品之一。它基于命令行界面,应用 Java 编写。在 Liquibase 里,schema 迁徙基于 Changeset 和 Changelog。可能因为其悠久历史和 Java 根基,最罕用的模式是 XML(不过起初增加了 YAML 和 JSON 反对)。
应用适当正文也可反对一般 SQL 语句。
Flyway
Flyway 是另一个具备悠久历史和宏大客户群的开源我的项目。其外围是 CLI 和 Java 库。
Flyway 已被 Redgate 收买,但仍放弃着开发者至上的初心,这一点在它官网也能够看进去。
Liquibase 和 Flyway 在其提供的性能上十分类似。它们之间的要害区别在于指标受众:Liquibase 面向企业客户,而 Flyway 则更重视开发人员敌对和易用性。
Bytebase
Bytebase 是一款为研发团队筹备的数据库 CI/CD 工具,专为开发者和 DBA 打造,用于协同解决数据库变更。Bytebase 应用 Go 和 TypeScript 编写。
Bytebase 提供了一系列可配置的 SQL 语法查看规定,用于检测 SQL 反模式,例如能够束缚 NOT NULL。
👻 Bytebase 还专门为 MySQL 在线 Schema 迁徙提供了基于 gh-ost 的 GUI。
除了治理数据库变更,Bytebase 还提供带有数据访问控制、动态数据脱敏和审计日志的 SQL 编辑器,以收口查问门路。
总结
💡 更多资讯,请关注 Bytebase 公号:Bytebase