您的位置:首页 > 数据库

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

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

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

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

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

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

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

1. 权限的申请

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

3. dba会审核这次的申请

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





这时候,你就有这个库的权限了,可以提交DDL和DML的语句。看下面的流程图,估计你已经看到大概了。
原文:http://rfyiamcool.blog.51cto.com/1030776/1428425





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

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

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

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

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

下面的截图和功能介绍只是该平台中的部分内容,有些话题不太方便聊,见谅。
原文:http://rfyiamcool.blog.51cto.com/1030776/1428425







这是用户执行DML SQL语句的页面,这里触发后端的时候,会把不是DML的语句,都会过滤出来。
原文:http://rfyiamcool.blog.51cto.com/1030776/1428425





下面是DDL的情况:



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
















alter是异步的执行。




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




这个数据库运维系统,不仅涵盖了上面所说的 数据库流程体系最基本的功能,而且还实现了对于dba本身的维护的功能模块。首先是慢查询,我会同步crontab的状态,会定期抓到慢查询的结果,扔到我的http存储接口上。原文:http://rfyiamcool.blog.51cto.com/1030776/1428425


再说下报警方面,这边有自己的一套报警方式,以yaml格式做成配置文件,然后python会根据yaml里面的配置,做他该做的事情。当然这些事情交给zabbix也挺好。 现在公司的zabbix开发人员正在逐步开发api接口。 没有开发之前,还是我们自己控制好点。




原文: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们,赶紧找个开发人员,给你们搞搞这个数据库运维平台,只为不苦逼 !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息