DMS的安全规则中新接入了SQL审核优化建议,在SQL Console或数据变更工单中,对提交的SQL语句进行规范审核并提出相关优化建议。本文将演示设置部分SQL审核的安全规则,并执行数据变更工单。
功能介绍
安全规则中已生成默认的SQL审核规则,例如:表要有备注
、插入语句不能为not null列插入null值
、插入语句中insert字段名不能重复
。
在开发人员提交SQL语句时,SQL审核优化建议会检测SQL语句是否符合研发规范(表属性、列属性、索引属性、数据查询规范、数据变更规范等),辅助DBA审核SQL语句,提高研发质量。更多信息,请参见配置SQL审核优化建议。
准备工作
- 本示例中已提前创建
migration_job
表,建表语句如下:CREATE TABLE `migration_job` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `gmt_create` datetime NOT NULL COMMENT '创建时间', `ref_id` bigint(20) unsigned NOT NULL COMMENT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='测试';
- 若实例的管控模式为安全协同,您可以额外创建安全规则集,并将数据库实例关联目标安全规则集。具体操作,请参见新增安全规则和应用安全规则。
步骤一:配置安全规则
- 登录数据管理DMS 5.0。
- 在顶部菜单栏中,选择 。
- 单击目标安全规则右侧操作列下的编辑。说明 若您需要配置自由操作或稳定变更的配置项,请单击对应管控模式右侧的SQL审核优化建议。
- 在详情页左侧的导航栏中,单击SQL审核优化建议。
- 单击
表要有主键
规则右侧的编辑。说明 您可以单击标记(规则生效范围,目前包含DDL语句、DML语句)、行为动作、状态(开启或关闭规则)右侧的图标,进行快速筛选。
- 在规则内容配置弹窗中,配置如下信息。
参数名 说明 行为动作 将行为动作设置为必须改进。 备注 输入此规则的备注信息,如业务背景信息。 - 单击确定。
在后续的数据开发、数据变更及SQL审核等功能中,SQL审核优化建议将根据配置的安全规则检验SQL语句。
步骤二:执行数据变更
在配置好安全规则后,执行数据变更工单。
- 登录数据管理DMS 5.0。
- 在顶部菜单栏中,选择 。
- 在数据变更工单申请页面,配置相关参数,并单击提交申请。说明 关于参数的说明,请参见普通数据变更。
- 选择已关联目标安全规则集的数据库实例。
- 数据变更的SQL代码如下:
CREATE TABLE test1 ( id bigint COMMENT 'id', name varchar(60) COMMENT 'name' ) DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_bin ENGINE = INNODB; INSERT INTO migration_job(id, ref_id, gmt_create, gmt_create) VALUES(1, null, now(), now());
- 工单提交后,系统将根据步骤一中配置的安全规则进行内容合法性检查。SQL审核优化建议对会提交的语句进行规范审核,本示例产生:1项必须改进意见、 2项潜在问题、 1项建议改进意见。
- 单击查看详情,将鼠标光标移动至SQL审核报错项上,查看具体的意见。
- 根据提示信息,单击修改SQL,优化SQL代码,并单击确认修改。修改内容为:
- 在
CREATE
语句中增加test1
表的主键与备注。 - 在
INSERT
语句中删除重复字段gmt_create
,并对ref_id
字段插入值。
修改后的SQL代码如下:CREATE TABLE test1 ( id bigint PRIMARY KEY COMMENT 'id', name varchar(60) COMMENT 'name' ) DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_bin ENGINE = INNODB COMMENT = '备注'; INSERT INTO migration_job(id, ref_id, gmt_create) VALUES(1, 2, now());
- 在
- 系统将再次进行预检查。检查通过。
- 单击提交审批,并等待管理员审批通过。审批通过后,会生成执行任务。
- 审批通过后,单击执行变更,在任务设置对话框中设置任务执行参数,并单击确定执行。说明 创建工单时,如果执行方式选择审批通过后,自动执行,系统会自动跳过此步骤。
配置项 说明 执行策略 选择执行策略: - 立即执行:单击确定执行后,立即执行工单任务。
- 定时执行:指定任务开始执行时间,单击确定执行后,在指定时间执行工单任务。
说明 已暂停的任务重启后,会根据导入模式选择从头执行任务,还是从暂停位置执行。- 极速模式:将从头开始执行脚本或导入数据文件。
- 安全模式:将从暂停位置继续执行脚本或导入数据文件。
开启整体事务 选择是否开启整体事务,默认关闭。 - 开启:执行失败则全部回滚(仅限DML,DDL不在范围内)。
- 关闭:逐条提交SQL任务,执行失败则终止任务,但不回滚。
开启备份 选择是否开启备份,默认开启。 说明- 仅执行UPDATE和DELETE语句时,支持备份数据。
- MongoDB和Redis不支持备份数据。
- 开启:执行
UPDATE
、DELETE
语句前,系统自动生成对应的备份脚本附件。- 如果数据库类型为MySQL和MariaDB,生成
REPLACE INTO
备份语句。说明 MySQL包括:RDS MySQL、PolarDB MySQL版、PolarDB分布式版、其他来源MySQL。 - 如果数据库类型为除MySQL、MariaDB外的其他引擎,生成
INSERT
备份语句。
- 如果数据库类型为MySQL和MariaDB,生成
- 关闭:不生成备份附件。
- 工单执行成功后,在操作列单击详情,可查看工单执行状态、执行次数、影响行数、执行脚本、日志等信息。
- 工单执行成功后,您可以进入目标数据库的SQL窗口,查看数据变更是否符合预期。
后续步骤
执行成功后可单击详情按钮,查看执行日志,包括执行语句、执行所用时间、调度详情等信息。
