---恢复内容开始---

一 简介:这次我们来介绍最核心的审核功能

二 讲解:简单来说 inception就是mysql的二次过滤,何谓二次过滤,我们知道,mysql本身都有自己的审核规则,为业界所通用。但是mysql的规则并不全面,有的很单一,这样inception就在mysql本身规则基础上,丰富完善了这种规则,并且可以自由灵活进行开关,这样就能灵活的适用于不同的场景,非常强大(给作者一个大大的赞)

三 前置:对于mysql默认的规则,本文不会做过多描述。

四 规则简介:

一  INSERT

1 在插入中,必须指定插入的列名,即使全部插入,也需要指定每个列名。(insert into a(a,b,c) values(123,213,13))  inception_check_insert_field=>默认开启

2 标记 not null的列,如果插入的值是null,报错  inception_enable_nullable=》默认开启

二 UPDATE,DELETE

1 必须有where条件   inception_check_dml_where=>默认开启

2 delete语句不能有limit条数  inception_check_dml_limit=》默认开启

3 不能有order by语句  inception_check_dml_orderby=>默认开启

4 影响行数大于10000条,则报警 inception_max_update_rows=》默认开启 可以设置 1-》max(默认值10000)

5 其他就是对于where条件的处理,就不一一说明了

三  Create

此项规则最多,这块也是可以自由定制的最多模块,我只对于自己线上的功能进行定制开发

1 列的类型不能使用集合、枚举、位图类型。 inception_enable_enum_set_bit=》默认关闭(如果线上不需要这些类型,强烈建议开启这个参数)

2 列必须要有注释  inception_check_column_comment=>默认开启(建议开启)

3 表必须要有注释  inception_check_table_comment=》默认开启(建议开启)

4 每个列都使用not null   inception_enable_nullable=》默认开启(建议开启)

5 建表指定的存储引擎不为Innodb,不报错   inception_enable_not_innodb=》默认关闭(建议关闭,另外,以后都是innodb的天下了,放弃myisam吧)

6 表必须要有主键  inception_check_primary_key=>默认开启(建议开启,主键对于表示非常重要的)

7 支持外键 inception_enable_foreign_key=>默认开启(根据业务需求来确定是否开启)

8 支持分区表 inception_enable_partition_table=》默认关闭(根据业务需求来确定是否开启)

9 创建或者新增列时如果列为NULL,进行警告 inception_enable_nullable=》默认开启(建议开启)

10 建表时,必须为timestamp类型指定默认值 inception_check_timestamp_default=》默认开启(建议开启)

11 建库建表所支持的字符集 inception_support_charset=(utf8/utf8mb4)

12 指定列的字符集  inception_enable_column_charset =》默认关闭(不建议开启)

13  建表时的自增类型必须为int or bigint  inception_check_autoincrement_datatype=》默认开启(建议开启,因为这类自增的一般都是主键类型)

14  建表时的自增类型初始值指定必须为1 inception_check_autoincrement_init_value=》默认开启(建议开启)

15  建表时的自增类型为无符号型 inception_enable_autoincrement_unsigned=》默认开启(建议开启)

16  建表时的自增类型命名为ID  inception_check_autoincrement_name=>默认开启(不建议开启)

17  添加索引时,索引名必须以idx_命名 ,唯一索引的前缀是uniq_  inception_check_index_prefix=>默认开启(建议开启,规范命名)

18  一个表中,索引的条数不能大于某个值  inception_max_keys=>默认16(可以设置1-1024)

19 一个索引中,列的个数不能大于某个值   inception_max_key_parts=》默认5 (可以设置1-64)

20 当数据类型char的长度大于某个值,转化为varchar类型  inception_max_char_length=》默认16(可以设置1-MAX,看场景需求选择最大值)

21 合并多个语句,针对同一张表  inception_merge_alter_table=》默认开启(没测试过,不太明白)

22  列是否支持 blob的操作   inception_enable_blob_type=》默认开启(看业务场景)

23  检测关于列的操作是否有默认值(修改 添加)  inception_check_column_default_value => 默认开启(建议开启)

五  DDL :

关于DDL的操作 强烈建议不要走inception, 由DBA自己判断执行。原因很简单,一旦涉及到大表的DDL操作,哪怕是调用PT工具,在业务高峰期依然会执行有问题(本人曾经遇到过因为业务导致的PT工具无法创建触发器问题)

inception_ddl_support => 默认值为关闭

六 如何修改变量:

1 登陆inception 服务

mysql -P  服务端口  -h  host

2  执行命令

inception get variables;

3  进行设置

inception set variable_name=value;

七  测试和beta环境中使用的规则

inception_check_autoincrement_datatype 检测自增长类型
     inception_check_autoincrement_init_value 检测自增长初始值
     inception_check_autoincrement_name 检测自增长名字
     inception_check_column_comment 检测每列的comment|
     inception_check_dml_limit 检测update,delete 不应该有 limit
     inception_check_dml_orderby 检测update,delete 不应该有 order by
     inception_check_dml_where 检测update,delete 必须要有 where
     inception_check_identifier 检测各种命名是否符合mysql规则(字母下划线数字)
     inception_check_index_prefix 检测index的命名 普通索引idx_ 唯一索引uniq_
     inception_check_insert_field 检测insert 语句必须要有列名
     inception_check_primary_key 检测表必须要有主键
     inception_check_table_comment 检测表必须要有commet
     inception_check_timestamp_default 检测列类型timestamp必须要有默认值
     inception_ddl_support 支持DDL操作
     inception_enable_autoincrement_unsigned 检测自增长必须要为无符号型
     inception_enable_blob_type 支持blob类型
     inception_enable_nullable 检测列类型是否为NULL
     inception_enable_orderby_rand 不支持order by rand
     inception_enable_partition_table 不支持分区表 |
     inception_max_char_length char长度超过16就会转为varchar
     inception_max_key_parts 一个索引不能超过5列
     inception_max_keys 一张表最多不能超过16个
     inception_merge_alter_table DML对于同一张表的合并

八  关于规则组合的一个建议:

规则组合需要与研发相适应,DBA可以列一份初始化列表和研发探讨,每个参数的开启与关闭,这样日后inception上线后就不会有研发频繁找到你进行询问了。

九 一些补充

1 inception不支持select

2 inception不支持update(select)这种带子查询的更新

转载于:https://www.cnblogs.com/danhuangpai/p/7681328.html

运维数据库平台~inception审核规则详解相关推荐

  1. 运维之道 | Nginx rewrite 规则详解

    Nginx rewrite 规则详解 一.rewrite规则概念 rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言.通常而言, ...

  2. linux awk命令根据分隔符输出,Linux运维知识之Linux awk命令详解

    本文主要向大家介绍了Linux运维知识之Linux awk命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. awk :适用程序,一种unix工具 就是一个强大的文本分析工 ...

  3. python编程入门与案例详解-Pythony运维入门之Socket网络编程详解

    Socket是什么? Socket 是电脑网络中进程间数据流的端点Socket 是操作系统的通信机制应用程序通过Socket进行网络数据的传输 首先,简单了解一下TCP通信过程: TCP三次握手(面试 ...

  4. 运维自动化之 Cobbler 系统安装使用详解

    一.简介 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的命令即可完成P ...

  5. awk if 不包含_linux高级运维必会命令——AWK命令详解及实例分享

    一.awk简介 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK ...

  6. Ansible自动化运维的安装及常用模块详解

    Ansible作为今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块可以实现各种管理任务, ...

  7. 运维之道 | Git log 命令详解

    Git log 命令详解 Git log 可以让我们查看提交commit history [root@localhost villian]# git log commit 7a690b414f87fb ...

  8. 运维配置:Nginx日志配置详解

    Nginx日志配置详解 前言 Nginx日志对于统计.系统服务排错很有用.Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志).通过访问日志我们可以得到用户的I ...

  9. mysql干货——数据库字符集和校对规则详解

    2019独角兽企业重金招聘Python工程师标准>>> 一.什么是字符集 字符是多个文字和符号的总称,包括各个国家的文字.标点符号.图形符号.数字等.字符集多个字符的集合. 字符集合 ...

最新文章

  1. 生产型机器学习已经没那么困难了?
  2. 获得指定的配置文件中的数据
  3. [机器学习]机器学习笔记整理12-线性回归概念理解
  4. PAT甲级1138 Postorder Traversal:[C++题解]前序遍历和中序遍历建树
  5. Effective C# 摘录(1) - C# Language Elements
  6. android8.1新功能,Android 8.1新特性:烦人的“正在后台运行”,拜拜
  7. 生活 list.php,list.php
  8. 索引的使用规则和设计考虑
  9. Java8使用Stream的缺点是调试困难?教你一招你就不会这么认为了
  10. seaborn单变量/双变量/多变量绘图
  11. V8 引擎是如何工作的?
  12. Unity中Lua造成的堆内存泄露问题
  13. Study 3 —— Python运算符
  14. BIM模型文件下载——某体育馆项目Revit模型
  15. 《球球大作战》源码解析:服务器与客户端架构
  16. linux系统 安装svn客户端下载,Linux安装svn客户端
  17. 周立功CAN通讯(txt格式) 报文解析
  18. pycharm清华镜像源使用
  19. 常用计算机 启动bios,常见电脑进入bios的方法
  20. 计算机的基本知识理论,计算机基本理论基础知识总汇

热门文章

  1. 下一个汽车万亿市场打开!氢能源时代正到来
  2. 观点 | 李飞飞最新访谈:我每天都在对AI的担忧中醒来
  3. 干货|十大产业方向深度解析!《2020科技产业趋势报告》
  4. “强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识
  5. 分享是程序员的必备素质
  6. Activiti Explorer 源码浅析
  7. Linux k8s 启动 停止 查询状态 脚本
  8. WPF入门:数据绑定
  9. 理解vuex -- vue的状态管理模式
  10. VR技术怎么落地,行业应用怎么挖掘,来江苏虚拟现实发展大会侃侃