逻辑表结构设计

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

背景信息

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

前提条件

  • 支持的数据库类型:

    • MySQL:RDS MySQLPolarDB MySQL版MyBase MySQL、其他来源MySQL。

    • OceanBase。

  • 实例的管控模式为安全协同。更多信息,请参见查看管控模式

  • 已有一个开发环境类型的逻辑库作为设计阶段的基准库、一个生产环境类型的逻辑库作为发布阶段的目标库。配置逻辑库和设置实例环境类型的操作,请参见逻辑库更改实例环境类型

    说明

    MySQL默认的安全规则(mysql default)规定结构设计的研发流程中设计阶段的库环境为开发库(dev),发布阶段的库环境为生产环境(product)。您可根据业务需求自行调整研发流程,具体操作,请参见结构设计

  • 您需要有基准库和目标库的变更权限。

注意事项

基准库与目标库的类型需要保持一致。例如基准库为MySQL,则目标库的类型也需要为MySQL。

操作步骤

  1. 登录数据管理DMS 5.0
  2. 在顶部菜单栏中,选择数据库开发 > 结构变更 > 结构设计

    说明

    若您使用的是极简模式的控制台,请单击控制台左上角的2023-01-28_15-57-17.png图标,选择全部功能 > 数据库开发 > 结构变更 > 结构设计

  3. 单击页面右上角的结构设计

  4. 配置结构设计工单的基本信息,并单击提交。部分参数说明如下:

    配置

    说明

    变更基准库

    选择安全协同模式的逻辑库。逻辑库的环境类型需要符合该数据库安全规则的研发流程规范,关于研发流程,请参见结构设计

    变更相关人

    搜索并选择变更相关人,变更相关人可查看工单,参与开发、评审并推动工作。

    说明

    非相关人员则不能查看工单(管理员、DBA除外)。

  5. 新建逻辑表。

    有两种新建逻辑表的方式:

    • 通过可视化方式

      1. 单击新建逻辑表

      2. 新建逻辑表页面,分别单击基本信息列信息索引信息,设置表的基本信息、列信息和索引信息。

      3. 单击分表拓扑,输入逻辑表的表达式。关于逻辑表表达式,请参见逻辑表表达式

        说明

        修改逻辑表表达式会删除原表,创建新表,风险比较大,无法回滚,请谨慎操作。

      4. 单击计算表拓扑分布,预览新建表名和表的分布地址是否符合预期。若不符合则可以调整表达式后重试。

      5. 单击保存

    • 通过SQL建表语句

      1. 单击导入SQL语句

      2. 输入建表Create Table或修改表Alter Table的SQL语句,并单击确定

        例如,创建两张表orders_logic_[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. 单击进入下一节点,在弹出的对话框中,再次单击进入下一节点

      整个流程结束,工单关闭后,您可以单击各节点查看变更与发布记录。

后续操作

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