本文档将以设计结构(Develop,后面简称Dev)、测试(Test)、生产发布(Product)的表结构设计步骤向您介绍规范、安全的表结构发布流程。

背景信息

在新项目、新需求或者优化等业务场景中,一般会涉及到新建表、修改表(加减字段、加减索引、调整字段属性、调整索引组成)等结构的变更操作,此时您可以使用DMS的结构设计功能。

DMS推出的结构设计为多套研发环境开发,且在开发过程中自动检测企业需遵循的表结构研发规范,并支持多人在Web页面协同开发的功能。

结构设计功能可保障研发自助变更的同时满足企业的设计规范、不同环境之间相关表结构的一致性,同时大大提升生产发布的成功率。

结构设计的功能说明如下。

功能 说明
保障生产发布的成功率 新的表结构在发布到生产环境前,会依据研发流程在逐个节点中对表结构进行验证,可避免未验证脚本直接发布到生产环境而导致发布失败的问题,保障生产发布的成功率。
保障环境结构的一致性 系统会依据研发流程对逐个环境进行结构变更,可避免因部分环境未执行而导致的测试延误、项目整体发版进展延误等。
保障数据结构的规范性 安全规则的研发规范包含新建表、修改表字段、修改表索引等多方面的近40条规范,方便研发同学自助设计满足企业研发规范的表结构,可避免因不满足规范的结构发布上线而导致的生产故障。同时,该功能可节省运维人员因人工检查规范而带来的人力投入,并提升研发效能,可以有效支撑快速迭代发版工作。

搭建示例的测试环境

  1. 创建3个RDS MySQL数据库实例,分别为:Schema_Design-dev、Schema_Design-test、Schema_Design-product,操作详情请参见创建RDS MySQL实例
  2. 将3个数据库实例录入至DMS中,将管控模式均设置为安全协同,并分别将数据库环境类型设置成开发(Dev)、测试(Test)、生产(Product)。云数据库录入的操作详情请参见云数据库录入,数据库实例环境的说明请参见实例环境说明
  3. 在3个数据库实例中分别创建3个对应的数据库:dev_database、test_database、product_database。
数据库实例与结构设计各节点的对应关系如下。
结构设计节点 设计结构(Dev) 测试(Test) 生产发布(Product)
对应数据库实例名称 Schema_Design-dev Schema_Design-test Schema_Design-product
环境类型 dev test product
数据库名称 dev_database test_database product_database

步骤一:配置研发规则

默认的研发流程为:设计结构(Dev)、生产发布(Product)。以下步骤将介绍如何新建安全规则并配置设计结构(Dev)、测试(Test)、生产发布(Product)的研发流程。

  1. 登录DMS控制台
  2. 在页面顶部的菜单栏中,单击系统管理 > 安全管理 > 安全规则
    安全规则按钮
  3. 安全规则页面中,单击左上角的新增规则集按钮,新增一个规则集。
    说明 规则及名称可自定义,本示例中以SD-DT为例。
    创建新安全规则
  4. 在安全规则详情页面左侧的导航栏中,单击结构设计
  5. 结构设计页签中,单击研发流程右侧的操作列下的编辑
    编辑研发流程按钮
  6. 编辑配置项对话框中,完成如下配置:
    1. 将第二条节点名称改为测试,将库环境改为test
    2. 新增第三条节点,将第三条节点名称改为生产发布,将库环境改为product,同时该节点设置为锚点
      说明 锚点:为工单编辑的冻结点,即锚点所在步骤成功发布之后,工单将会变成已发布状态,不可编辑。
    配置界面如下图所示。
    编辑研发流程
  7. 单击提交

步骤二:设置数据库实例的安全规则

将Schema_Design-dev数据库实例(环境类型为Dev)的管控模式设置为安全协同并选择步骤一创建的SD-DT安全规则。

  1. 登录DMS控制台
  2. 在控制台首页左侧的实例列表中,右键单击Schema_Design-dev数据库实例。
  3. 在弹出的列表中,选择管控模式 > 安全协同 > SD-DT
    选择目标规则集

步骤三:进行结构设计

以下步骤以新建数据库的表结构变更为例,向您介绍设计结构(Dev)、测试(Test)、生产发布(Product)三节点的结构设计项目。

  1. 登录DMS控制台
  2. 在顶部菜单栏,选择库表结构 > 结构设计
    结构设计按钮
  3. 单击页面右上角的结构设计
    创建结构设计工单按钮
  4. 配置结构设计工单信息,并单击创建工单
    创建结构设计工单-界面
    配置 说明
    项目名称 填写项目名称便于后期管理,本示例中以结构设计测试为例。
    业务背景 描述项目的业务背景信息,例如变更目的、预期目标等,减少沟通成本。
    变更基准库 选择dev_database数据库,因为在步骤二时,已将该实例的安全规则设置为ST-DT,系统会根据该安全规则的研发流程创建出设计结构(Dev)、测试(Test)、生产发布(Product)的结构设计流程。
    说明 系统会根据第一个变更基准库的安全规则创建结构设计的研发流程。
    安全规则 DMS会自动选择,无需配置。
    变更相关人 单击新增设置相关人员,被设置的人员都可查看工单并协同工作,非相关人员则不能查看工单(管理员、DBA除外)。
    创建工单后,系统会自动跳转到结构设计项目首页,该项目共有5个节点,如下图所示。结构设计流程图
  5. 在设计结构节点进行配置:
    1. 单击导入建表语句
    2. 在文本框中输入以下语句,并单击确定导入建表语句
      CREATE TABLE `teacher` (
          `teacher_id` varchar(20) NOT NULL COMMENT '教师编号',
          `teacher_name` varchar(20) NULL COMMENT '教师名字',
          `phonenumber` varchar(20) NULL COMMENT '教师电话号码',
          PRIMARY KEY (`teacher_id`)
      ) DEFAULT CHARACTER SET=utf8 COMMENT='教师表';
    3. 在控制台界面确认基本信息字段索引等信息。
      • 基本信息新建表-基本信息
      • 字段字段
      • 索引新建表-索引
    4. 单击保存,并在弹出的预检测结果窗口中单击确认无误,提交保存
    5. 单击执行变更到基准库
    6. 在弹出的对话框中,选择执行策略为立即执行,并在确认最终的SQL语句无误后单击提交执行执行到变更基准库
    7. 提交执行后请等待审批完成,待审批完成后,系统会将新的表结构写入到dev_database数据库中。
    8. 您可以前往SQL Console插入数据或提交数据变更工单对dev_database数据库进行测试。节点验证通过时,即可将该变更结构发布到下一节点中。插入测试数据

      示例代码如下。

      insert into teacher
      (teacher_id, teacher_name, phonenumber)
      values
      ('t001', 'teacher001', '1380000001'),
      ('t002', 'teacher002', '1380000002'),
      ('t003', 'teacher003', '1380000003');
    9. 在结构设计工单页面中,单击进入下一节点
      说明 在进行该项操作前,您可以与您的同事在该节点对dev_database数据库进行多次变更设计与验证,系统最终会产生一个create脚本,发布到下个节点。
      进入下一节点
    10. 在弹出的对话框中,再次单击进入下一节点
  6. 在测试节点进行配置:
    1. 单击执行变更到目标库
    2. 选择test_database数据库,并将执行策略设置为立刻执行,单击提交执行
      说明 提交执行后请等待审批完成,待审批完成后,系统会将变更的结构写入到test_database数据库中。
    3. 您可以前往SQL Console插入数据或提交数据变更工单对test_database数据库进行测试。
      说明 当该节点验证通过时,即可将该变更结构发布到下一节点中。
    4. 在结构设计工单页面中,单击进入下一节点进入下一节点-测试节点
    5. 在弹出的对话框中,再次单击进入下一节点
  7. 在生产发布节点进行配置:
    1. 单击执行变更到目标库
    2. 选择product_database数据库,并将执行策略设置为立刻执行,单击提交执行

      提交执行后请等待审批完成。待审批完成后,系统会将变更的结构写入到product_database数据库中,您也可以将数据写入生产环境中(product_database数据库)。

    3. 在结构设计工单页面中,单击进入下一节点进入下一节点-生产发布节点
    4. 在弹出的对话框中,再次单击进入下一节点

      整个流程结束,工单关闭。