数据管理DMS提供的结构设计功能,可以实现对目标库表进行符合研发规范的表结构设计。您可按需自定义不同业务线的研发流程,保障多套环境(例如开发环境、测试环境、生产环境)之间结构的一致性。本文介绍逻辑表结构设计的方法。

前提条件

  • 支持的数据库类型:
    • MySQL:RDS MySQLPolarDB MySQL引擎MyBase MySQL、其他来源MySQL
    • OceanBase
  • 实例的管控模式为安全协同。更多信息,请参见查看管控模式

背景信息

分库分表后需要保障一个分表的DDL变更在所有分片中同时生效,同时尽可能减少复杂操作。DMS提供的逻辑表结构设计基于逻辑库逻辑表的聚合,可以实现将分库分表当做单个表进行透明操作,符合用户诉求。

操作步骤

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择数据库开发 > 结构变更 > 结构设计
  3. 单击页面右上角的结构设计
  4. 配置结构设计工单的基本信息,并单击创建工单
    配置 说明
    项目名称 填写项目名称便于后期管理。
    业务背景 描述项目的业务背景信息,例如变更目的、预期目标等,减少沟通成本。
    变更基准库 选择安全协同模式的逻辑库。逻辑库的环境类型需要符合该数据库安全规则的研发流程规范,关于研发流程,请参见结构设计
    安全规则 自动选择,无需配置。
    关联迭代 单击选择/切换迭代,在目标迭代名称的操作列,单击关联,关联迭代。
    变更相关人 搜索并选择变更相关人,变更相关人可查看工单,参与开发、评审并推动工作。
    说明 非相关人员则不能查看工单(管理员、DBA除外)。
  5. 新建逻辑表。
    有两种新建逻辑表的方式:
    • 通过可视化方式:
      1. 单击新建逻辑表
      2. 新建逻辑表页面,分别单击基本信息列信息索引信息,设置表的基本信息、列信息和索引信息。
      3. 单击分表拓扑,输入逻辑表的表达式。关于逻辑表表达式,请参见逻辑表表达式
        说明 修改逻辑表表达式会删除原表,创建新表,风险比较大,无法回滚,请谨慎操作。
      4. 单击计算表拓扑分布,预览新建表名和表的分布地址是否符合预期。若不符合则可以调整表达式后重试。
      5. 单击保存
    • 通过SQL建表语句:
    1. 单击导入建表语句
    2. 输入建表Create Table或修改表Alter Table的SQL语句,并单击确定

      例如,创建两张表orders_logic2_[05]orders_logic_[06],SQL建表语句如下:

      CREATE TABLE `orders_logic_[05-06]` (
          `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key',
          `gmt_create` datetime NOT NULL COMMENT 'create time',
          `gmt_modified` datetime NOT NULL COMMENT 'modify time',
          PRIMARY KEY (`id`)
      ) DEFAULT CHARACTER SET=utf8 COMMENT='创建逻辑表';
    3. 新建逻辑表:orders_logic_[05-06]页签,确认表结构信息,确认无误后,单击保存
      说明 已有表的变更不能调整分表表达式。
  6. 预检测结果对话框中,查看预检查结果。
    • 预检查通过:单击确认无误,提交保存
    • 预检查结果中只有警告:单击忽略警告, 继续保存,或单击关闭,按规范修改表结构后,重新单击保存
    • 预检查结果中有错误:查看错误原因,单击关闭,按规范修改表结构后,重新单击保存
    说明
    • 系统根据默认安全规则中的研发规范对建表语句进行校验,提示本次操作中存在的研发规范类错误和警告。
    • 当前DMS的研发规范支持新建表、修改表字段、修改表索引等多方面近40条规范,您可以在安全规则中进行自定义配置。
    预检查通过后,系统将自动跳转至结构设计项目首页页签,您可以在项目编辑的表页签中,查看修改、新增的表,编辑、删除目标表等。
  7. 将修改、新增的表执行到基准库中。
    1. 单击执行变更到基准库
    2. 执行变更到基准库面板,选择执行策略、灰度方式和灰度行动,单击确定
    待审批完成后,系统会自动将修改、新增的表结构执行到基准库中,在变更执行历史页签中查看执行进度。
    说明
    • 执行记录会以每个分库一条记录进行分组执行。
    • 您可以在基准库的SQL窗口中,查看修改、新增的表结构是否符合预期。
    • 默认的安全规则规定结构变更均需要提交审批工单,您也可以在安全规则中进行自定义配置,例如设置开发节点的变更为免审批、设置生产节点的变更审批人等。
  8. 单击进入下一节点,在弹出的对话框中,再次单击进入下一节点
  9. 将修改、新增的表结构执行到生产库中。
    1. 单击执行变更到目标库
    2. 执行变更到目标库面板中,选择目标库,单击确定
      说明 您还可以单击增加多套库,将脚本代码批量执行到多套生产库。
      待审批完成后,系统会自动将修改、新增的表结构同步到目标生产库中。您还可以在生产库的SQL窗口中,查看修改、新增的表结构是否符合预期。
    3. 单击进入下一节点,在弹出的对话框中,再次单击进入下一节点
      整个流程结束,工单关闭后,您可以单击各节点查看变更与发布记录。

后续操作

创建逻辑表后,需要维护路由算法。具体操作,请参见路由算法配置