批量数据库变更
DBSC 批量数据库变更支持对数据库结构或数据进行统一的修改和更新操作,可同时覆盖多个数据源、库、表,确保在分布式环境下的数据源能够在同一时间内完成相同变更。
背景信息
在业务不断发展的过程中,企业面临着多套环境和多地区的部署情况,在单个业务数据量庞大的场景下,企业可能采用分库分表的方式来满足查询和存储需求。随着业务的迭代,需要对同一套分库分表进行结构或数据的修改。传统的部署方式是按照数据库数量逐个进行任务,但这容易导致变更遗漏、变更不一致、研发和审批者反复工作等问题。
在这种背景下,企业迫切需要一种高效的批量数据变更方式,能够通过一次提交覆盖多套环境、多个地域、一个分表的所有分片,并确保变更的一致性。这对于企业在规模扩大后的管理问题以及运维人员的挑战是比较大的。解决这个问题需要一种创新的变更管理方案,以提高效率、降低风险,并更好地适应不断变化的业务环境。
前提条件
实例已开启开启企业版。
创建库分组
该步骤用于将多个需要进行批量变更的数据库分到同一个分组中,以便后续进行批量变更操作。一个变更 SQL 语句将在同个库分组中的所有库中挨个执行。
- 登录 DBSC 控制台。
- 在左侧导航栏,点击 数据开发—>规范与流程。
- 单击库分组页签,单击页面中的创建库分组>目标数据源。
-
根据下表配置表单,并单击创建库分组。
参数 说明 库分组名称 输入库分组的名称,仅支持英文字符、数字和下划线,以英文字符开头。为了方便后续使用和管理,请尽量使用有意义的名称。 描述(可选) 输入针对该库分组的业务描述。 环境 选择您的业务所属的环境名称,您将根据该环境筛选数据源。 库 单击添加数据源,选择需要加入到分组中的数据源,支持多选、全选和反选操作,同时支持输入数据源名称进行搜索,单击确定后,还需要选择具体的库,根据数据源不同,可能还需要选择具体的 Schema。 说明
库分组创建完毕后,默认使用所属环境中配置的 SQL 开发规范以及审批流程,您可以根据业务需求进行更改,更多信息,请参见修改库分组的 SQL 开发规范和审批流程。
创建表分组
相较于库分组,表分组用于更细粒度的批量数据变更,一个变更 SQL 语句将在同个表分组中的所有表中挨个执行。如需创建表分组,必须已经创建库分组。
- 登录 DBSC 控制台。
- 在左侧导航栏,点击 数据开发—>规范与流程。
- 单击库分组页签,单击目标库分组名称,或单击该库分组右侧操作列的>详情。
- 在分组详情页面,单击创建表分组。
-
根据下表配置表单,并单击创建表分组。
参数 说明 表分组名称 输入表分组的名称,仅支持英文字符、数字和下划线,以英文字符开头。为了方便后续使用和管理,请尽量使用有意义的名称。 方式 支持手动添加和表达式添加两种。 表达式添加 方式选择表达式添加时需要配置,输入表达式并单击自动提取后,系统将根据您提供的表达式,自动遍历并提取目标库中所有符合要求的表。 路由算法(可选) 方式选择表达式添加时可配置,根据您应用中配置的路由算法配置该参数,可以根据路由快速解析需要访问的表,提高查询效率。 库 方式选择手动添加时需要配置,单击添加数据源,选择需要加入到分组中的数据源,支持多选、全选和反选操作,同时支持输入数据源名称进行搜索,单击确定后,还需要选择具体的库和表,根据数据源不同,可能还需要选择具体的 Schema。
修改库分组的 SQL 开发规范和审批流程
用户在目标库分组中执行 SQL 进行批量变更时,该库分组的 SQL 开发规范将作为自动审核的依据对该 SQL 进行审核,同时,审批流程用于管理变更请求的生命周期,涉及到是否要求人工进行审批,以及配置多层审批等,以增强变更的安全性。
- 登录 DBSC 控制台。
- 在左侧导航栏,点击 数据开发—>规范与流程。
- 在规范与流程页面,单击 库分组配置页签,然后单击目标库分组右侧操作列的编辑。
- 在编辑库分组配置窗口中,将规范流程下继承环境配置左侧的勾去掉,然后选择您需要的规范和流程,单击确定。
说明
重新选中继承环境配置即可恢复成默认配置。
执行批量变更
实际对库分组执行批量变更的操作是通过 SQL 任务执行的,SQL 任务是将数据变更操作流程化、自动化的机制,还支持 SQL 的定时执行。基于配置的 SQL 开发规范,SQL 任务会自动审核目标变更语句,并自动拦截不符合规范的 SQL 语句,以确保变更的安全可控。
- 登录 DBSC 控制台。
- 在左侧导航栏,点击 数据开发—>SQL 任务。
-
在 SQL 任务页面,单击页面中的创建 SQL 任务,然后根据下表配置表单。
参数 说明 任务名称 输入 SQL 任务的名称,该名称通常包含了 SQL 语句的执行目的,为减少沟通成本,请尽量使用有意义的名称。最多支持 64 个字符。 数据源 单击左侧下拉框,选择库分组,然后单击右侧下拉框,选择目标需要变更的库分组。 执行人 当前 SQL 任务审批通过后的 SQL 语句执行人。 说明:执行人列表中的可选项取决于如下两种情况: 预估影响行数 输入此次变更预计会影响多少行数据。在 SQL 任务的规范预审阶段,系统会校验 SQL 实际的影响行数和输入的预估行数是否有出入,如果不一样则会进行提示。 备注(可选) 针对当前 SQL 任务未尽事项的说明,例如执行任务的原因,期望执行时间等。 变更 SQL 输入需要执行的 SQL 语句或上传包含 SQL 语句的文件。 - SQL 文本:直接在文本框中输入需要执行的 SQL 语句。
- SQL 文件:单击上传文件,选择并上传包含需执行 SQL 语句的文件。说明:上传完成后,把鼠标移动到文件名处,可在文件名右侧选择(预览文件)或(删除文件)。
回滚 SQL(可选) 针对需要对变更提供回滚预案的企业,此处输入的回滚 SQL 会记录在当前 SQL 任务中,但在当前 SQL 任务的全生命周期中不会产生任何影响,仅用于合规操作。 - 单击预检查,系统会提前对 SQL 语句进行检查,排除语法错误等无法执行的情况。如果 SQL 语句有问题,会在下方出现提示,您可以在任务列表中展开任务查看具体的错误信息,方便您进行定位和修改。
-
单击保存并规范预审,进入规范预审页面。系统将基于当前库分组关联的 SQL 开发规范对 SQL 语句进行预审,会有如下几个结果:
- 预审通过:根据审批流程的配置情况,任务状态会更改为待提交或审批通过,如果是前者,请继续下一步,如果是后者,单击页面右上角的执行即可,本流程结束。
- 预审不通过:任务状态会更改为规范预审不通过,您可以单击页面右上角的重新检查再次预审,也可以撤回 SQL 任务重新编辑并提交。
说明
预审出来的问题,包含了必须改进、建议改进、语法问题、权限四个类别:
- 必须改进:命中了 SQL 开发规范中必须改进规范问题。
- 建议改进:命中了 SQL 开发规范中建议改进规范问题。
- 语法问题:请重点关注,由系统自动检测出来的语法问题,虽然不阻断 SQL 任务流程,但是该 SQL 可能会执行失败,请检查库、表存在性及语法正确性。
-
权限:命中了管理员在 SQL 开发规范中配置的如下两个规则,SQL 任务流程被阻断。
- 开启 SQL 任务结构更新类型检查:用于允许或禁用结构变更类型的 SQL 语法。
- 开启 SQL 任务数据更新类型检查:用于允许或禁用数据变更类型的 SQL 语法。
-
在页面右上角单击提交审批,在弹出的窗口中选择流程审批人员,单击确定。
说明
根据审批流程配置的不同,此处需要选择的审批人员数量不同,请根据实际情况选择。
-
任务状态变更为审批中,在审批通过之前,您可以进行如下操作。
- 撤回:撤回 SQL 任务。更多信息,请参见撤回 SQL 任务。
- 转交:更改该 SQL 任务的审批人。
- 审批通过后,任务状态会更改为审批通过,单击页面右上角的执行,执行批量数据库变更。