ITPub博客

首页 > 数据库 > MySQL > 数据库平台

数据库平台

原创 MySQL 作者:aoerqileng 时间:2022-01-23 23:27:59 0 删除 编辑

之前写的一个数据库平台,使用的Django。本来数据库平台是包含了很多的部分,但是自己没有太多时间投入到上面,所以当时的数据库平台的各个部分使用了很多的开源系统,修改了部分代码适配后使用了,所以我的数据库平台中只是自己写了数据库cmdb 部分,还想讲一些统计信息放到上面进行展现,只是实现了慢查询统计的定时收集展现。定时任务通过celery执行。认证使用cas进行认证。代码实现了多环境,可以指定不同的环境,dev,test,prd。方便连接不同环境的配置。使用gunicorn部署。


cmdb这个不太好标准化,都有自己的特殊需求,会跟运维的cmdb进行交互,主要是获取部门业务线信息,将db归属到具体业务线下面。cmdb相当于中枢系统,需要与各个组件交互,所以如果每个组件没有统一在数据库平台上实现,需要制订好接口,各个部分通过接口或者消息队列与数据库平台交互。更多常见的是脚本中暴力的直接sql写到库里,这种的也行,能用就行呗,就是low了点。


数据库数据同步系统


这个主要是当时开发会提很多的MySQL数据同步的请求。将数据从线上同步到测试,预上线等,次数也不少,每次手工去同步真的是忙不过来,所以提前就做了一个单独的在线同步系统,使用的ldap认证,开发登陆后,自己提个单子,然后可以自己执行同步,同步任务使用的celery异步执行,执行完成后,可以发送webhook 提示成功信息。也可以将数据导出成sql文件或Excel文件,并且可以在界面上获取文件,这个功能肯定不合规的,后面就禁用了。使用的查询平台进行下载。当时没有工单系统,所以开发对数据库的一些申请操作,有的放到这个系统上了,后面有了工单系统后,权限的开通都转移到工单系统上了。


数据库的创建

这个部分需要需要跟很多系统进行交互,cmdb,查询平台,sql审核平台,授权,域名,调用的接口很多,或者直接放到队列,让各个部分去消费。这个有点复杂了,直接用接口就可以,毕竟qps不会很高。


数据库实例安装部署

在数据库同步系统中使用了salt api进行部署,当时是测试通过了,但是没有真正用,主要是当时没时间,也没心情搞了。



总体来说,数据库平台的各个组件我基本上都实现了,虽然不是一个完整的统一平台,但是通过接口可以将数据串联起来形成数据的闭环。


我实现的数据库平台的组件包含:

cmdb python 

数据同步 python 

基于master slave的定时任务平台 golang

dbagent,收集数据库的信息,进行报表展示,告警,容量规划等。 golang

mysql数据对比 golang

备份agent,这个备份的调度是linux crontab执行的,应该使用上面的定时任务平台管理,更方便。 python


使用的开源组件包含:

查询平台 python,查询平台在添加新数据库的时候,需要重启,应该部署多个节点,上面挂nginx,轮询重启。

sql审核平台 python

监控告警

高可用, 高可用这做的不多,主要是工作上没有条件去做,都是手工处理,切换。


自己写的脚本:

大事务分析脚本 python 

processlist故障分析脚本 python

variables 对比 python

表结构对比  python

输出cluster架构信息脚本  python

脱敏脚本,python  脱敏脚本跟业务强相关无法通用,需要考虑幂等性。


mysql数据系统表空间解析 这个是实验性质的开发, golang



关于中间件,个人感觉vitess更好,因为是golang开发的,相对比其他中间件,dba能容易hold住,有大厂线上使用,缺点是使用条件高,运维成本高,掌握源码成本高。


vitess源码研究中













来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25719946/viewspace-2853708/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 数据库agent
下一篇: raft 高可用尝试
请登录后发表评论 登录
全部评论
二手知识受害者

注册时间:2011-11-02

  • 博文量
    68
  • 访问量
    47731