用 Bytebase 做数据库 schema 迁移
数据库 schema 迁移指修改管理数据库结构的变更,包括为数据库添加视图或表、更改字段类型或定义新约束。Bytebase 提供了可视化 GUI 方便迁移数据库 schema,本教程将展示如何使用 Bytebase 为 schema 迁移配上 SQL 审核,自定义审批流,发布策略,指定发布时间等功能。
功能
Bytebase 提供社区版、专业版和企业版。更进阶的版本解锁了更多可以搭配迁移 schema 模式的功能。
- 入门 - 自动 SQL 审核(社区版、专业版和企业版)
- 进阶 - 发布策略(专业版和企业版)
- 高阶 - 自定义审批流(企业版)
准备工作
运行 Docker,并启动 Bytebase 的 Docker 容器:
docker run --init \ --name bytebase \ --restart always \ --publish 5678:8080 \ --health-cmd "curl --fail http://localhost:8080/healthz || exit 1" \ --health-interval 5m \ --health-timeout 10s \ --volume ~/.bytebase/data:/var/opt/bytebase \ bytebase/bytebase:2.11.1 \ --data /var/opt/bytebase \ --port 8080
通过 Docker 启动 Bytebase 后,使用 localhost:5678
访问主页,请先注册一个账户,此账户将自动被授予工作空间的管理员角色。
入门 - 自动 SQL 审核 + 自动发布(社区版)
- 在环境的 Test 和 Prod 页面中,可以分别看到:
- 发布策略为「自动发布」。除非出现警告或错误,否则工单成功创建后将自动发布。
- 生产环境上启用了 SQL 审核,并使用示例策略。
- 点击 Prod 环境下的「SQL Review Sample Policy」 可进入 SQL 审核模板,此模板中开启了列的「强制非空约束」策略,我们尝试违反看看。
- 前往 Sample Project,我们为 Prod 环境的 employee 表添加空的 Email 列。
ALTER TABLE employee.employee ADD Email varchar(255);
- 工单创建后,SQL 审核将自动运行,并出现了「强制非空约束」警告。
- 给 SQL 加上 NOT NULL 约束后即可通过 SQL 审核,工单将自动发布。
ALTER TABLE employee.employee ADD Email varchar(255) NOT NULL;
- 发布完成后可以在数据库 employee 的变更历史中看到变更记录和前后 schema 差异。
进阶:指定发布时间 + 手动发布(专业版)
使用专业版,你会获得两个额外的功能(出于 demo 需要,这里我们使用免费的 14 天的企业试用版):
- 特定角色发布
可以指定多个预定义的角色来手动发布变更。在环境的 Prod 页面中,选择特定手工发布,勾选允许发布变更的角色,点击更新。
- 指定发布时间
可以指定特定时间来发布变更。前往 Sample Project,我们为 Prod 环境的 employee 表添加 Country 列。
ALTER TABLE employee.employee ADD Country varchar(255) NOT NULL;
可在工单页面指定发布时间。
高阶:自定义审批流 + 手动发布(企业版)
如果你希望审核流程更加定制化,比如基于 SQL 语句类型,变更影响的行数等,可以在「自定义审批」中配置(友情提醒:请先在「实例」页面为需要使用自定义审批的实例分配证书。否则自定义审批将无法启用)。
- 前往设置⚙️ > 自定义审批。DDL 高风险的审批流设置为 Project Owner -> DBA。
- 前往设置⚙️ > 风险中心。添加一条「生产环境的 DDL 语句,默认为高风险」的规则。
-
前往设置⚙️ > 成员,添加一个 DBA 角色,因为稍后需要 DBA 批准发布。
-
进入环境 Prod ,现在你可以解锁第三个选项了!即由自定义审批流的最后一个审批人手动发布策略。选择该选项。
- 前往 Sample Project,我们给 Test 和 Prod 数据库分别加一列 City。
ALTER TABLE employee.employee ADD City varchar(255) NOT NULL;
- 创建工单,审批流将自动匹配,此为第一步设置的 Project Owner -> DBA 审批,批准后将会自动发布。
总结
你现在已经了解了如何使用 Bytebase 进行数据库 schema 迁移。Bytebase 还提供更多功能,欢迎来试试:
- GitOps,观察 Git 代码推送事件并触发 schema 迁移
- 批量变更,在单个工作流中更改多个数据库
- 分支,使用类似于 Git 的分支协作进行 schema 变更
- 变更列表,按顺序编排和发布变更,或将其导出以离线执行
💡 更多资讯,请关注 Bytebase 公号:Bytebase

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
万亿级洪峰下,RocketMQ 作者十年运维心路历程!
01 缘起 最近,我听到了有人用“皮实”来形容 RocketMQ,RocketMQ 一直给人简单、稳定和可靠的形象,其实稳定性的认可得来是最不容易的。 回想起来,2012 年是 RocketMQ 参与的第一次阿里双十一,成功处理了 10 亿级的消息量,算是小试牛刀,随后 RocketMQ 跟着阿里巴巴的电商业务逐渐从百亿、千亿、五千亿,直到 2016 年双十一当天,RocketMQ 零问题支撑了万亿级的消息量。 这四年,RocketMQ 积累了大量的稳定性经验,RocketMQ 团队从来不吝啬将这些经验开源到社区,所以今天如果大家仔细挖掘,可以在 RocketMQ 零散的代码片段里找到很多稳定性细节。比如客户端里面的小黑屋机制,Broker 侧的请求快速失败,os.sh 对内存、磁盘调度器、文件句柄等的调整,服务端时不时就有一类 RPC 请求拥有了自己的独立线程池。这些冰冷的代码变更背后,可能是 RocketMQ 团队背下的一个又一个的故障。 02 上云之路 时间来到了上云的时刻,技术人终于有一天能把技术变成产品,能直接给公司的营收做出贡献,RocketMQ 开始为云上数万的企业客户提...
- 下一篇
使用函数计算,数禾如何实现高效的数据处理?
作者|邱鑫鑫,王彬,牟柏旭 公司背景和业务 数禾科技以大数据和技术为驱动,为金融机构提供高效的智能零售金融解决方案,服务银行、信托、消费金融公司、保险、小贷公司等持牌金融机构,业务涵盖消费信贷、小微企业信贷、场景分期等多个领域,提供营销获客、风险防控、运营管理等服务。数禾科技通过自主开发的消费信贷产品,连接金融机构与普罗大众,赋能金融机构数字化转型,迎接中国消费升级的大潮。 数禾当前有三款主要产品,还呗,还享花,小店邦。每款产品都有大量的受众,每天会产生大量的应用日志,数据通过压缩后归档到阿里云 OSS 存储,以达到最优的存储成本。 低效的数据处理 应用日志通过 SLS 收集,压缩并归档到 OSS,整个链路都非常顺滑。但日常有些业务需要查看详细的应用日志,由于日志收集会将 APP 上不同应用的日志都打到一起。因此,获取某个应用的日志,需要从 OSS 解压大量的文件,并从中过滤出特定的应用,才可以进一步分析排查。这个过程在实效性和数据处理效率上都存在很大的问题,为此,数禾运维团队计划从源头重构整个任务处理链路,以求以最低的开发成本,最高的处理效率,最优的资源费用,最好的扩展性打造高可用,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音