用 Bytebase 做数据库 schema 迁移

数据库 schema 迁移指修改管理数据库结构的变更,包括为数据库添加视图或表、更改字段类型或定义新约束。Bytebase 提供了可视化 GUI 方便迁移数据库 schema,本教程将展示如何使用 Bytebase 为 schema 迁移配上 SQL 审核,自定义审批流,发布策略,指定发布时间等功能。

file

功能

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 审核 + 自动发布(社区版)

  1. 在环境的 Test 和 Prod 页面中,可以分别看到:
  • 发布策略为「自动发布」。除非出现警告或错误,否则工单成功创建后将自动发布。
  • 生产环境上启用了 SQL 审核,并使用示例策略。

file

  1. 点击 Prod 环境下的「SQL Review Sample Policy」 可进入 SQL 审核模板,此模板中开启了列的「强制非空约束」策略,我们尝试违反看看。

file

  1. 前往 Sample Project,我们为 Prod 环境的 employee 表添加空的 Email 列。
ALTER TABLE employee.employee
ADD Email varchar(255);
  1. 工单创建后,SQL 审核将自动运行,并出现了「强制非空约束」警告。

file

  1. 给 SQL 加上 NOT NULL 约束后即可通过 SQL 审核,工单将自动发布。
ALTER TABLE employee.employee
ADD Email varchar(255) NOT NULL;
  1. 发布完成后可以在数据库 employee 的变更历史中看到变更记录和前后 schema 差异。

file

进阶:指定发布时间 + 手动发布(专业版)

使用专业版,你会获得两个额外的功能(出于 demo 需要,这里我们使用免费的 14 天的企业试用版):

  1. 特定角色发布

可以指定多个预定义的角色来手动发布变更。在环境的 Prod 页面中,选择特定手工发布,勾选允许发布变更的角色,点击更新。

file

  1. 指定发布时间

可以指定特定时间来发布变更。前往 Sample Project,我们为 Prod 环境的 employee 表添加 Country 列。

ALTER TABLE employee.employee
ADD Country varchar(255) NOT NULL;

可在工单页面指定发布时间。

file

高阶:自定义审批流 + 手动发布(企业版)

如果你希望审核流程更加定制化,比如基于 SQL 语句类型,变更影响的行数等,可以在「自定义审批」中配置(友情提醒:请先在「实例」页面为需要使用自定义审批的实例分配证书。否则自定义审批将无法启用)。

  1. 前往设置⚙️ > 自定义审批。DDL 高风险的审批流设置为 Project Owner -> DBA。

file

  1. 前往设置⚙️ > 风险中心。添加一条「生产环境的 DDL 语句,默认为高风险」的规则。

file

  1. 前往设置⚙️ > 成员,添加一个 DBA 角色,因为稍后需要 DBA 批准发布。

  2. 进入环境 Prod ,现在你可以解锁第三个选项了!即由自定义审批流的最后一个审批人手动发布策略。选择该选项。

file

  1. 前往 Sample Project,我们给 Test 和 Prod 数据库分别加一列 City。
ALTER TABLE employee.employee
ADD City varchar(255) NOT NULL;
  1. 创建工单,审批流将自动匹配,此为第一步设置的 Project Owner -> DBA 审批,批准后将会自动发布。

file

总结

你现在已经了解了如何使用 Bytebase 进行数据库 schema 迁移。Bytebase 还提供更多功能,欢迎来试试:

  • GitOps,观察 Git 代码推送事件并触发 schema 迁移
  • 批量变更,在单个工作流中更改多个数据库
  • 分支,使用类似于 Git 的分支协作进行 schema 变更
  • 变更列表,按顺序编排和发布变更,或将其导出以离线执行

💡 更多资讯,请关注 Bytebase 公号:Bytebase

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/225204.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决Could not establish connection to : XHR failed

解决Could not establish connection to : XHR failed 问题描述 用vscode用远程连接服务器时总报上面的错误,用xshell和Xftp和vscode终端都可以连上,但是用vscode的ssh连接缺总报错,导致无法连接服务器进行代码调试 一、原因 原因可能是在…

Python tkinter 之文件对话框(filedialog)

文章目录 1 文件1.1 获取单个文件名称:askopenfilename()1.2 获取多个文件名称:askopenfilenames()1.3 获取单个文件属性:askopenfile()1.4 获取多个文件属性:askopenfiles()1.5 获取保存文件的路径:asksaveasfilename…

树莓派4B iio子系统 mpu6050

编写基于iio的mpu6050 遇到的问题,在读取数据时,读出来的数据不能直接拼接成int类型 需要先将其转换成short int,再转换成int 效果如图所示 注:驱动是使用的modprobe加载的 简单画的思维导图 设备树修改部分: …

大模型发展对教育领域的巨大影响

摘要: 教育是一个复杂而微妙的领域;有效的教学涉及对学生认知的推理,并应反映学生的学习目标。基础模型的性质在这里提出了在人工智能教育领域尚未实现的承诺:虽然教育中的某些许多数据流单独地过于有限,无法训练基础模型&#xf…

【linux系统编程】编辑器gcc/g++

目录 Linux下的编辑器 介绍: 1,编辑器gcc/g 1-1,系统的编译过程 1-2,预处理过程 1-3,编译过程 1-4,汇编过程 1-5,链接过程 Linux下的编辑器 介绍: Linux系统下可支持很多高…

祝大雪节气安康,大雪动态表情包图片带字祝福大全,大雪快乐暖心问候祝福语

1、大雪节气,送你防寒秘笈:1、天寒地冻防路滑;2、寒风呼啸防感冒;3、寒气袭人防哮喘;4、戴上耳套防冻耳;5、戴上手套防冻手;6、穿上棉鞋防冻脚;7、多喝开水防上火。8、加强锻炼防疾患。祝健康快乐。 2、奉天承运,皇帝诏曰:大雪节气…

STM32CubeMx+MATLAB Simulink串口输出实验

STM32CubeMxMATLAB Simulink串口输出实验 📌《STM32CubeMxMATLAB Simulink点灯程序》📍相关篇《MATLAB Simulink STM32硬件在环 (HIL)实现例程测试》🔖需要的软件支持包:Embedded Coder Support Package fo…

Spingboot 之spring-boot-starter-parent与spring-boot-dependencies区分

在创建spring boot工程时,spring-boot-starter-parent 和 spring-boot-dependencies是二选一的关系,在pom中引入其中一个就可以了。 那么什么时候用spring-boot-starter-parent 和 spring-boot-dependencies呢?从字面名称上看,如…

「Verilog学习笔记」根据状态转移写状态机-二段式

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 和三段式相比,就是将输出块和次态切换块合并。 timescale 1ns/1nsmodule fsm2(input wire clk ,input wire rst ,input wire data ,output reg flag );//****…

利器|一款集成的BurpSuite漏洞探测插件

本着市面上各大漏洞探测插件的功能比较单一,因此与TsojanSecTeam成员决定在已有框架的基础上修改并增加常用的漏洞探测POC,它会以最少的数据包请求来准确检测各漏洞存在与否,你只需要这一个足矣。 1、加载插件 2、功能介绍 (1&a…

『VUE3后台—硅谷甄选』

一、准备前期 pnpm create vite

计算机操作系统3

1.虚拟机 VM 两类虚拟机的对比: 2.进程 进程的特征: 进程状态的转换(五大状态) 3.进程控制原语的作用 4.线程 ​​​​​线程的属性 实现方式 5.调度算法的评价指标

python-sql-spark常用操作

数据抽取提速: 1. 不要把rdd或者df展示出来,只有第一遍跑流程的时候看看中间结构,后面就只保存不展示。 2. 尽量使用spark.sql,而不是rdd。sql处理groupby会快很多。基本上10min的rdd,sql只需2min。所以基本除了复杂…

深度探索Linux操作系统 —— 构建内核

系列文章目录 深度探索Linux操作系统 —— 编译过程分析 深度探索Linux操作系统 —— 构建工具链 深度探索Linux操作系统 —— 构建内核 文章目录 系列文章目录前言一、内核映像的组成 前言 内核的构建系统 kbuild 基于GNU Make,是一套非常复杂的系统。 对于编译内核…

用 C 写一个卷积神经网络

用 C 写一个卷积神经网络 深度学习领域最近发展很快,前一段时间读transformer论文《Attention Is All You Need》时,被一些神经网络和深度学习的概念搞得云里雾里,其实也根本没读懂。发现深度学习和传统的软件开发工程领域的差别挺大&#xf…

19、XSS——HTTP协议安全

文章目录 一、Weak Session IDs(弱会话IDs)二、HTTP协议存在的安全问题三、HTTPS协议3.1 HTTP和HTTPS的区别3.2 SSL协议组成 一、Weak Session IDs(弱会话IDs) 当用户登录后,在服务器就会创建一个会话(Session),叫做会话控制&…

tomcat配置管理员And配置访问静态资源

配置管理员 打开 tomcat\conf\tomcat-users.xml <tomcat-users xmlns"http://tomcat.apache.org/xml"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://tomcat.apache.org/xml tomcat-users.xsd"version&qu…

openai 1.3.x 版本 openai.APITimeoutError: Request timed out. 解决

问题描述 openai 1.3.x 版本 请求出现 Request timed out File "E:\Python\Python312\Lib\site-packages\openai\_base_client.py", line 920, in _request return self._retry_request( ^^^^^^^^^^^^^^^^^^^^ File "E:\Python\Python312\L…

python爬虫零基础学习之简单流程示例

文章目录 爬虫基础爬虫流程常用库爬虫示例关于Python爬虫技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 爬虫基础 网络爬…

微信小程序动态加载图表[echart]

1.引入Echarts &#xff08;1&#xff09;将ec-canvas文件拷贝下来放到你自己的项目中&#xff1a; &#xff08;2&#xff09;在你需要使用Echarts的页面的json文件中引入Echarts "usingComponents": {"ec-canvas": "../utils/ec-canvas/ec-canva…