MySQL DBA日常数据库维护要点


字段定义

  • 字段定义要见名知意,一般是实际意思的英文单词,如订单就是order;

  • 相同意义的字段名最好命名相同,比如数据来源都是source_type,不要一个source_type,一个sources或者source_types;

  • 一般每张表都要有下面的字段,记录数据状态,并不是业务状态,当然也可以跟业务混用,比如created_at 原意是数据落库时间,也可以当成客户提交数据的时间,这个混用没关系;

  • 关于主键ID的选择:到底是int、bigint型还是varchar型,看业务选择,各有各的好处,确定好之后整个库最好都统一,比如都是int型,都是varchar型;建议用bigint,int自增型不好迁移数据;

  • 单数/复数的形式也统一,比如orders还是order,一般默认是复数形式;

  • 数据的创建日期也统一,要么是datetime,要么都是时间戳int型;

  • 数据库的排序规则COLLATE 要保持统一;

  • 能用utf8mb4就不要utf8,表情符号属于 utf8mb4, utf8里表情不展示;

  • 淘汰外键,一般不再使用外键;

      `id`  bigint(20) NOT NULL COMMENT 'ID',
      `remark` varchar(255) DEFAULT '' COMMENT 'ID备注',
      `state` tinyint(4) DEFAULT '0' COMMENT '状态 0-正常,99-删除',
      `version` int(11) DEFAULT '0' COMMENT '版本号',
      `created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建日期',
      `created_operator_id` varchar(40) DEFAULT '' COMMENT '创建人',
      `created_operator_name` varchar(40) DEFAULT '' COMMENT '创建人名称',
      `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改日期',
      `updated_operator_id` varchar(40) DEFAULT '' COMMENT '修改人',
      `updated_operator_name` varchar(40) DEFAULT '' COMMENT '修改名称',
    

表定义

  • 表名:每个相同业务的表名要有相同的前缀,以字母t开头的3个字前缀;如:tbm、too等;
  • 表名一般不要太长:一般前缀后两个或3个单词,用下划线分割;比如ta_a_b、ta_request_logs 等等;
  • 每一个库都应该有个码表,用于配置参数;
  • 一般同实例不同数据库的业务不能有相同的表名,code码表例外;
  • 表名全部小写;

存储过程/函数

  • 存储过程一般以up_table,代表更改某表,或者以proc_开头;
  • 复杂的报表查询最好用存储过程生成,然后再查询生成的结果,不要直接写在报表查询里,因为维护起来比较复杂;

视图

  • 其他实例的视图,可以通不过DTS先同步过来,然后再新建视图;
  • 视图一般v_开头;

触发器

  • 每个类型的触发器最好只建一个,比如插入前的所有操作都在一个触发器里面,不要建两个插入前触发器;
  • 不要使用navicat自带的触发器修改保存!使用语句进行删除后新增;这里面有个触发器问题,就是一旦你的触发器写错了,整个都会消失掉,原因是修改是 先删除后新增,先删除成功了,新增失败了,导致找不到之前的触发器了!
  • 触发器的命名规则是:trg_table_bi, 中间是实际的名称,前缀是触发器的简称,后缀是类型,bi就是before_insert,插入前触发器;

事件

  • 事件执行,如果是每天一次的,最好放到凌晨执行,或者是业务低谷时间段执行;
  • 事件执行要有监控记录,确保执行成功;

安全

  • 每种功能分别建立一个账户,如开发用、同步数据用、报表用等等;
  • 所有账户密码应离线保存excel并加上文件密码;
  • 遵循一库一开发账户 规则,禁止 一个实例全部的库都用同一个开发账户;
  • DTS同步的库,要改库名,一般加后缀_dts,或者_sync,与业务库区分开来;
  • 数据库里的敏感信息,如密码、身份证号、手机号等,要加密,禁止明文;

日常监控

  • 锁监控:
  • 慢查询监控:线上查询超过1秒的;
  • 报表慢查询监控:查询超过30秒的;
  • 长事务监控:
  • 存储过程监控:如运行超过5分钟的;
  • 敏感sql监控,如DDL语句;

语句审核

  • 可以使用开源工具,如yearing。
  • 除DBA人员和运维外,其余同事不得日常中拥有生产库写权限和DDL权限,读权限不能有批量导出功能;测试服可以有读写权限,或者只有读权限;

其他

  • DBA离开座位应立即锁屏!开机密码要复杂!
  • DBA工作电脑不能随意安装其他软件,避免病毒!
  • 大批量修改数据,一定要跟开发核对条件是否正确,操作流程是否无误!

文章作者: 洛神葵
版权声明: 本博客所有文章除注明转载外均为原创,采用 CC BY-NC-ND 4.0 许可协议。不得用于商业用途,转载请注明来源 洛神葵 !
评论
  目录