关于数据库自动化运维平台的设计及开发实现思路

今个讲解下,个人对于数据库运维自动化平台的理解,话说这个项目和我以前做的lvs集群平台一样,都是分成两个主要的角色,一个是对于普通用户的申请及权限内的执行,还有一个是对于dba的审核及相关的日常dba数据库操作。

DBA其实也是很苦逼的,再高端的dba也是由苦逼开始的。如果你是苦逼的dba,那更要往下看了。

因为工位紧张的缘故,我现在和一排的dba做在一起,见到了他们的高端,也见到了他们的苦逼。

工作期间,经常会有人烦他们,让他们进行DDL DML、实例的相关操作.大家也都知道规范的数据库维护是不允许开发人员直接到server搞的,尤其是DDL相关的,这个需要发邮件,让负责人确定,然后再请dba来操作的。 


这个时候就需要,很有必要的有一个系统来解决这些让人蛋碎的事情。运维自动化平台就是为了解放蛋碎事件的。 

这些东西,咱们完全可以自动化流程起来的。

1.  权限的申请

2.  会发给对应的领导,让他来确认

3.  dba会审核这次的申请

这个时候,权限的申请已经结束了。用户这时候,可以去DDL和DML操作。

wKioL1Oisp6hdyZHAAHQEjVIiLA185.jpg

这时候,你就有这个库的权限了,可以提交DDL和DML的语句。看下面的流程图,估计你已经看到大概了。

原文:http://rfyiamcool.blog.51cto.com/1030776/1428425 

wKioL1OitSyCpMTWAAM7xdSONH0574.jpg

    该系统的流程设计,是由前人人网dba大牛(谭志军)来搞的,至于功能的实现是我搞。这项目做到现在快一个月了。  这首席dba确实很强,公司的zabbix每天都有几G数据量增长,你可以想想现在数据该有多大! 但在他眼里,那都不是事!随手就能给出万台监控压力下的数据库分解压力方案,虽然因为zabbix 底层代码本身就不高明,导致压力分解的效果不突出。  人甚是有意思,只是有些时候,不解女孩子的风情 ~


    开发的日子里,深深的感觉到,任何人都有产品经理的潜质,曾经和他说,以前有个人总是给我提需求,让我”灭“了! 没想到,他也只是浅浅的一笑,然后继续提需求,感觉他好高大上。


他的微博是http://weibo.com/tzhijun  ,记得给他加粉。


该平台现在算是第二版了,更新和修复了不少的功能和bug。 谭志军是个很好想法的孩子,虽然现在的版本也算是强大,其实本来能做出更强大的东西出来。比如索引相关的。。。 只是…..      不多说了 !


我们的dashbord,这里分享的是初期的实例,后期我们还是会做大量的前后端的高进。


下面的截图和功能介绍只是该平台中的部分内容,有些话题不太方便聊,见谅。

原文:http://rfyiamcool.blog.51cto.com/1030776/1428425 

wKiom1PoXdPw2ld-AAQhGsJGFPY648.jpg


wKiom1OivPyQDyShAAJb2CQ5ZSk182.jpg

这是用户执行DML SQL语句的页面,这里触发后端的时候,会把不是DML的语句,都会过滤出来。

原文:http://rfyiamcool.blog.51cto.com/1030776/1428425 

wKioL1OivX7zka9tAAR9JBI4oKU300.jpg


下面是DDL的情况:

wKioL1Oi_3jg4Iu5AAG9AL95pHE089.jpg

这个时候,管理员收到了相关的进度邮件,登录平台处理未完成的任务,在权限管理平台,可以给为DBA开启动态口令卡,密码是60秒更新一次的。 当然也可以撤销这种烦人的认证。

wKioL1Oj2SiQv8B7AAD8TCijQS8428.jpg


wKioL1Oj2jSAC6i6AAHRNYBxYMs293.jpg


wKioL1OivhbgzCNJAAPg_TgN3Vg471.jpg


wKioL1OquKTAYKGSAAPn9AQynx8405.jpg


alter是异步的执行。

wKiom1POOUTQxg7aAALLR9baZCE200.png


这里主要是查询数据,自动会分页,数据的导出txt和json文件。

wKioL1OivqvBkPppAAORI_L4TBc663.jpg

这个数据库运维系统,不仅涵盖了上面所说的 数据库流程体系最基本的功能,而且还实现了对于dba本身的维护的功能模块。

首先是慢查询,我会同步crontab的状态,会定期抓到慢查询的结果,扔到我的http存储接口上。

原文:http://rfyiamcool.blog.51cto.com/1030776/1428425 

wKiom1Oi_R_j-AdXAAJduqx1PqY389.jpg


再说下报警方面,这边有自己的一套报警方式,以yaml格式做成配置文件,然后python会根据yaml里面的配置,做他该做的事情。当然这些事情交给zabbix也挺好。

    现在公司的zabbix开发人员正在逐步开发api接口。  没有开发之前,还是我们自己控制好点。

wKiom1Oj266QGJ2ZAASe9tnvzyc668.jpg

原文:http://rfyiamcool.blog.51cto.com/1030776/1428425 


下面的就不截图了,实在是有些麻烦了。。。。 也有些怕首席dba殴打! 这里在简单介绍下,围绕dba管理平台的相关的功能。


对于数据库的备份,采用saltstack的jid来异步的执行任务,会记录备份文件的大小,开始时间,结束时间,及备份的状态,另外在modules里封装了一个rsync的模块进行文件上传。 平台每天主动出一个备份情况的报表,除了上面的备份情况,当他监控到今天没有搜到10.10.10.10这mysql的备份,会在报表中标红。 如何针对备份进行报警,客户端每次备份的时候,会反查下到现在为止,上次有没有备份成功,没有的话,也会触发报警。 如果周期是长线的那种,每次客户端备份,会给master端一个信号,master会间隔性的查询,如果在一定时间内没有完成,他也会报警的。


对于上线,独立出一个功能,该平台是通用的,每次执行完了,都会调用平台的接口,比如他现安装mysql的依赖包,接着安装mysql-server,最后调用接口,让他创建 xiaorui这个库,及 pop这个表。 懂了吧。


对于下线服务,这就好办了,平台会流程发给项目的负责人,如果他们确定后,数据库会打包备份好,在平台中标记下线。


对于众多的数据库,会做一些日常load和硬件占用的评估报表,比如你的数据库的量压根就不大,那你就没有资格占用一台服务器,这边会做一个周期性的报表,根据情况会把他塞到服务器里面的实例 ! 说白了,就是省钱方案。


对于部署方面,平台有所欠缺,后期会加入环境的部署及快速的部署mysql从服务器,还能在平台修改从服务器。 

总结,我这边的数据库管理系统,在一些用户体验更像是phpmyadmin的感觉,因为语言mysql驱动的问题,导致python实现phpmyadmin的功能,不太如意,尤其是各种的过滤,在php可以直接把用户的sql提进去,我这边需要做一些正则的过滤,最少去去掉分号 !  dba们,赶紧找个开发人员,给你们搞搞这个数据库运维平台,只为不苦逼 !


对Golang感兴趣的朋友可以加群: 278517979 !!!
另外如果大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码, 感谢!
另外再次标注博客原地址  xiaorui.cc