今天是公司夏游结束后的第一天,去了趟杭州回来,总体感觉很好,尝试了很多有意思的事情,觉得生活又重新变得有意思起来,总之,一切很好。
今天一天主要干了两件事情,第一是准备阶段性总结前段时间的工作,第二部分是SQL审核问题的一些bug的讨论处理,这里一一展开写写。
从七月份入职到现在,我主要完成的工作有三个方面:
1.MySQL基础部分知识的学习;
2.SQL审核项目的立项和执行;
3.运维管理系统部分模块的开发。
第一部分,MySQL基础知识部分,主要学习了mysql的安装和部署,mysql的主从复制原理(主要是实现了一主一从复制环境的搭建)、mysql的备份恢复方法(这里包含了mysqldump、mysqlpump这种逻辑备份方法和xtrabackup这种物理备份方法)、mysql5.7的新特性(其中重点研究了sys schema的新特性部分)、mysql体系结构、mysql源码组织结果以及mysql优化器相关的内容,期间进行了两次线上数据库的主从复制环境搭建,一套环境采用mysqldump的逻辑备份方式进行主库备份,另外一套环境采用xtrabackup的物理方式进行主库数据备份,学习的内容很杂,很多东西虽然写了学习笔记,但是还是需要完善,后期尽量抽时间完善吧。
第二部分,SQL审核部分,该部分是近期的重点,主要是对Inception这一SQL审核工具的功能按照公司的开发规范进行定制,定制的过程大概是这样的:
首先编译Inception,在编译的过程中,遇到了不少的坑,最主要的是cmake .命令和sh inception_build.sh debug命令之间的区别,这个区别在前面的文章当中有讲过;
其次是将提示信息,按照一定的语法规则翻译成中文,从而方便开发人员进行阅读,该过程中需要注意参数顺序的对应匹配;
然后是最重要的部分,也就是逻辑定制,主要是定制内容如下,
1.删除已有的不需要的审核逻辑 字符集utf8mb4的逻辑可以改动 2.修改已有的审核逻辑 主要方向是truncate和drop操作,直接禁用 3.按照数据库开发规范添加审核逻辑 Drop操作提示; Truncate操作提示,分为表存在和表不存在; float、double类型不建议使用; text、blob类型不建议使用; enum类型建议使用tinyint代替; 数据库名称、表名称、字段名称不能大写; 索引个数不能超过5个; 单个索引的字段数不能超过5个; 临时库,表名必须以"tmp_"为前缀; int数据类型,不建议使用自定义的数字,直接建议修改为int(11);
最后根据不同的提示信息的重要程度,对提示信息进行分类,然后将分类的结果按照重要程度进行展示,开发人员首先需要解决的是最重要的那一类错误,然后是报出警告的错误,最后是需要完善的一些内容。并且针对SQL跑出的结果,对SQL进行打分,展示界面如下:
第三部分,是运维管理系统的开发,这里主要学习了一些前端的技术,包含HTML、Javascript的基本语法、以及Django的MTV架构、前端页面如何获取后端数据的方法、后端代码如何获取前端页面的输入信息等,此部分还有许多内容没有搞清楚,接下来的学习过程中将在这些方面下功夫琢磨。