全部产品
云市场

数据变更/数据订正

更新时间:2018-10-26 20:53:08

需求背景

  • 项目发布上线数据初始化、历史数据清理、问题修复、测试等诉求下,需要对数据库进行数据上的更新操作
    • 包括但不局限insert、update、delete、truncate等

步骤

  • 1:产品业内左侧导航栏数据变更进入后可进行新建工单

    数据变更入口

  • 2.填写表单

输入项 输入方式 输入值 备注说明
原因分类 下拉选择 管理员、DBA可在【系统管理】-【配置管理】找到此配置项按需维护
业务背景 手工输入 可详细描述此次变更的出发点,预期要做的主要研发目标等
相关人员 下拉选择 相关人员都可查看工单,并协同研发推进工单流转;非相关人则不能查看工单(管理员、DBA除外)
执行方式 下拉选择 默认“审批通过后,提交者执行”,可选“审批通过后,自动执行”、“最后审批人执行”
数据库 下拉选择 “变更”权限的数据库 只有库的查询权限或只有表的变更权限时无法提交
影响行数 手工输入 预估本次更新会影响的数据行数,可在SQLConsole以count统计
变更SQL 手工输入\附件上传 必须是可直接执行的SQL语句,产品在提交时会自动校验语法正确性,不正确则阻断无法提交(用户需要自己确保业务逻辑的正确性)
回滚SQL 手工输入\附件上传 可直接执行的SQL语句,变更脚本对应的逆向脚本

数据变更提交

  • 3.提交确认
    • 重点关注实际影响行数和预期影响行数的差异,避免SQL误写逻辑导致更新不符合预期

一致性

  • 4.工单审批
    • 本次case对应实例及操作无需审批,由于所选执行方式为“审批通过后,提交者执行”,此时需要执行则由提交者本人“执行变更”,截图为提交者视角
      • 若需要审批的工单,审批不通过则工单结束;
      • 若脚本相关信息需要调整,可在执行之前都可以撤回修改再进行提交。

待执行

  • 注:【系统管理】-【安全规则】可支持根据企业实例级别管控需要灵活配置规则与审批流程

数据变更安全规则

  • 5.工单执行
    • 执行方式为“审批通过后,提交者执行”的工单在审批通过后,提交者需要触发“执行变更”
控制项 控制值 备注说明
立即执行 是 / 否(需要指定具体时间) 默认开启为“是”,提交即刻执行;可按需指定在业务特定时间执行
事务控制 是 / 否 默认不开启为“否”,逐条提交,遇到失败则终止但不回滚;开启则遇到失败则全部回滚(仅限DML,DDL不在范围内)
备份数据 是 / 否 默认开启为“是”,针对update、delete进行将要影响数据的全记录行insert脚本生成附件

数据变更执行

执行2

  • 6.执行结果确认
    • 执行成功后可以通过“执行详情”查看对应的执行日志详情,包括影响行数与执行所用时间等信息

结果1

结果2

  • 【注】如遇更新不符合预期需要快速恢复,可从“查看备份”下载对应的备份文件,主要包含以下几部分内容:
    • 1.变更的原始SQL
    • 2.备份逻辑的查询SQL
    • 3.备份的数据写入SQL【恢复时使用】

备份

使用小窍门

  • 1)对于重复性的变更操作,可以找到原历史工单在页面内右上角-类似创建快速复制提交工单
  • 2)对于变更执行后出现异常不符合诉求需要回滚的,可直接工单页面内右侧-工单操作历史-查看备份进行脚本下载处理后,重新提交变更工单
  • 3)对于需求变更,在提交审批后无论审批通过与否均可撤回工单。避免后续审批通过后误操作执行
  • 4)工单的审批流程由管理员、DBA在系统管理-实例管理-安全规则进行指定,建议大家日常测试环境的变更也通过工单管理(考虑研发效率的影响可设置无审批);这样在变更时都有备份、行数校验等保障即使操作不符合预期也可以快速恢复
  • 5)对于分库分表的场景,如果已在产品内配置逻辑库逻辑表路由算法则可以一个工单便捷的提交分库分表的操作,而无需逐个物理库表提交
    • 带路由算法配置,并且更新条件带路由字段的字段书写则可产品快速自动路由到具体物理库表执行
    • 若不带路由算法配置或变更条件里不带路由字段、路由字段书写类型与结构定义不符合这三种场景会造成SQL在每一个分库分表上逐一执行,执行时间会较久【不推荐】
      • 极少数全部分表都需要同时更新的场景除外可按需使用