overmind系统上线三个月,累计执行任务800+,自动审核执行SQL超过5000条,效率提升相当明显,离“一杯咖啡,轻松运维”的目标又进了一步。

写在前边

overmind系统是我们自主研发的一个数据库运维系统,目前包含数据库管理、工单、SQL审核、SQL执行、SQL查询、密码表等功能,关于这些功能有写过一些文章介绍:

  • 中小团队快速构建SQL自动审核系统
  • Django开发密码管理表实例【附源码】

同时我们还自研了其他一些Devops相关的系统,这篇文章有介绍

  • 我们自研的那些Devops工具

自吹自擂

起初在写overmind时就有考虑到之后的扩展,不仅仅是作为SQL自动审核执行的平台,更希望能将其打造成一个数据库自动化运维的专业系统,SQL自动审核执行作为第一个功能被开发了出来。三个月的使用后overmind得到了大家的认可,并且切切实实帮助我们节约了时间,这也给予了我这个非专业开发、半吊子DBA莫大的鼓励和信心。

日常工作中经常会接到把数据库整库或单表从生产环境导入到测试环境或测试A导入到测试B等数据库、表之间的数据互导需求,这类操作没有太高技术含量还费时费力容易出错,最适合做到自动化的流程中,这便是overmind要实现的第二个功能:工单+自动化数据迁移。

为什么需要工单?目前的流程都是通过邮件的方式,需求邮件到DBA,DBA执行导数据的操作。自动化的流程理论来说应该从头至尾都无需人工参与,但涉及到数据安全问题,还是需要DBA确认,所以加了工单。同时工单具有状态自助追踪,减少沟通成本等优点,后续也方便统计工单量等指标,以便优化服务与流程。同时为了能够保证工单及时被处理,我们每一步都会增加邮件和IM的通知,给用户最及时的反馈。

数据迁移的工单流程很简单,用户提交工单,DBA进行审核,审核通过系统自动执行迁移操作,审核不通过流程结束。流程图图如下:

流程中没有加入项目leader等的多层审核方式,主要是因为

  1. 尽量跟之前的邮件流程保持一致,避免给用户制造麻烦
  2. 团队规模较小,数据敏感度DBA基本可以把控,同时会在通知邮件中加上相关的同事以知晓

迁移功能

数据库迁移主要是利用mysql的导入导出功能,核心的命令就一个

mysqldump -h 10.82.9.19 -P 3306 -uops -pcoffee --default-character-set=utf8 --single-transaction --databases dbname | mysql -h 192.168.106.91 -P 3306 -uops -pcoffee --default-character-set=utf8 dbname

以上命令是shell命令,在python下没有找到直接导入导出mysql数据的包,只能在python代码中调用shell命令,推荐使用subprocess模块,这个模块有着更加丰富的使用方法,方便获取最终的命令执行状态和输出结果,转换成完整的python类如下:

from subprocess import Popen, PIPEclass Cmd():def __init__(self):self.src_host = '10.82.9.19'self.src_port = 3306self.src_database = 'dbname'self.des_host = '192.168.106.91'self.des_port = 3306self.des_database = 'dbname'self.tables = 'all'self.username = 'ops'self.password = 'coffee'def migration(self):# 利用mysqldump命令备份dump = "mysqldump -h %s -P %d -u%s -p%s --default-character-set=utf8 --single-transaction --databases %s" % (self.src_host, self.src_port, self.username, self.password, self.src_database)# 如果是对表的导出则加上表名,是个字符串'table1 table2 table3'if self.tables != 'all':dump += ' %s' % self.tables# 利用mysql命令导入mysql = "mysql -h %s -P %d -u%s -p%s --default-character-set=utf8 %s" % (self.des_host, self.des_port, self.username, self.password, self.des_database)# 执行导出导入shell命令process = Popen("%s | %s" % (dump, mysql), stderr=PIPE, shell=True)process_stdout = process.communicate()# 判断shell命令执行结果状态if (process.returncode == 0):print('迁移成功!')else:print(process_stdout[1].decode('utf8').strip())Cmd().migration()

这里采用了shell中的管道,管道用|符号分割两个命令,管道符前的命令正确输出作为管道符后命令的输入,好处是不需要生成单独的sql文件存放在磁盘上,也就不需要考虑文件删除,占用磁盘的问题,缺点是导出大的数据库时可能会造成OOM,这个要根据自身情况综合权衡。

导数据属于耗时操作,在web中应异步执行,这里采用了Celery来处理,这篇文章Django配置Celery执行异步任务和定时任务有详细介绍Django中Celery的使用

系统界面

工单列表页:普通用户只显示自己提交的工单,工单状态一目了然,还有实用的搜索功能

提交工单页:overmind维护了一份数据库列表,供系统里所有的功能使用,这里也不例外

工单审核页:审核页和详情页其实是同一个页面,只是根据工单不同的状态展示不同的元素

工单详情页:这里会详细记录这个工单的所有信息,提交、审核、执行的整个过程完整状态

写在最后

  1. 好的需求来源于日常的工作,重复的工作都可以自动化
  2. 关于数据库运维或者overmind有什么想法或建议欢迎交流

如果你觉得文章对你有帮助,请转发分享给更多的人。如果你觉得读的不尽兴,推荐阅读以下文章:

  • 中小团队快速构建SQL自动审核系统
  • Django配置Celery执行异步任务和定时任务

转载于:https://www.cnblogs.com/37Y37/p/11220337.html

Devops-运维效率之数据迁移自动化相关推荐

  1. 数据中心如何提高运维效率?数据中心综合能效管理解决方案——安科瑞 严新亚

    1.概述 安科瑞电气紧跟数据中心发展形式,推出AcrelEMS-IDC数据中心综合能效管理解决方案,包含有电力监控.动环监控.消防监控.能耗统计分析.智能照明控制以及新能源监测几个子系统.集成了变配电 ...

  2. DevOps运维自动化工具系统平台

    Alodi:为了保密我开发了一个系统 Alodi:环境创建从未如此简单 Probius:一个功能强大的自定义任务系统 Kerrigan:配置中心管理UI的实现思路和技术细节 开源推荐 | CoDo开源 ...

  3. 基于云计算的自动化部署与自动化运维:提高运维效率

    作者:禅与计算机程序设计艺术 1.简介 随着互联网技术的飞速发展,网站流量日益增长,用户对网站功能及其可用性的需求也越来越高,越来越多的人开始担忧网站的安全和稳定性.因此,如何快速.准确地处理网站故障 ...

  4. 多功能自动化智能运维平台,提升集群的全自动运维效率

    一.开源项目简介 致力于打造一个集主机管理.配置部署.监控报警.异常诊断.安全审计等一系列功能的自动化运维平台. 探索创新的sysAK.ossre诊断工具及高效的LCC(Libbpf Compiler ...

  5. 发布国内首个无服务器容器服务,运维效率从未如此高效

    近年来,随着越来越多的企业基于微服务架构构建自身核心业务平台后,微服务已获得越来越多技术人员的肯定,同时,微服务也承载着企业数字化转型的重任.但微服务架构的落地给企业的运维团队带来了不少的挑战,原有的 ...

  6. DevOps运维开发一体化 - 公开课笔记

    DevOps 运维开发一体化 DevOps 核心思想:最大化提升工作效率,通过一系列技术栈来体现. 开发人员 产品经理 测试人员 运维人员- 分部门的传统的开发方式,开发周期一般比较长,部门比较分散, ...

  7. DEVOPS 运维开发系列一:ITIL服务目录管理流程的设计与信息化管理系统功能的开发

    ITIL是世界范围内公认的运维服务管理的最佳实践.ITIL的理论落地,不需要什么信息系统的支持,使用word文件.Excel表格一样可以对ITIL的十几个关键管理流程做到很好的落地.虽然是这么讲,但现 ...

  8. DevOps系列文章之 DevOps 运维服务体系

    DevOps 体系是从原始运维一步步走过来的,原始运维好比是本,有了本进而想继续提升效率.减少出错.优化流程,就发展到了 DevOps,AIOps--各种Ops 首先,运维的业务职能规范后形成章程.纲 ...

  9. 《2023金融科技趋势研究报告》显示dbPaaS管理平台将成为提升数据库应用、运维效率的关键...

    2023年1月,恒生电子研究院发布了<2023金融科技趋势研究报告>,其中明确指出dbPaaS管理平台将成为提升数据库应用.运维效率的关键.dbPaaS趋势的背景是,随着信创进程的推进以及 ...

最新文章

  1. ps怎么清屏_PS:oracle恢复删除的数据
  2. 反射小应用之DataTable和ListT互操作
  3. SharePoint 2010 Crawl Component Stuck in “Recovering” status
  4. Asp.Net实例:C# 绘制统计图(三) ——扇形统计图的绘制
  5. 记腾讯一面 | 掘金技术征文
  6. 中国移动锁定数据业务新战略
  7. Android ViewPager+TabHost实现首页导航
  8. 电话号码被标记,快速取消教程
  9. 电脑重装系统误删重要数据了怎么办
  10. Project(10)——收货地址 - 设置默认
  11. 主分区、扩展分区、逻辑分区和活动分区的区别
  12. 简单抽样技术——样本均值是总体均值的无偏估计
  13. Linux系统运维常用命令集锦
  14. Android实现图片轮播
  15. 机器学习实战——分类
  16. 新新人类蒙奇奇的天翼3G精彩生活
  17. 小红书 程序员七夕礼物 - 微信每日早安推送,简单无坑的最新教程
  18. 万能引用,引用折叠,右值变左值的情况
  19. PTES-渗透测试执行标准
  20. skia windows编译

热门文章

  1. 如何制作印章_电子公章怎么制作
  2. marc数据个人心得
  3. 记录0.7.1版本的seata批量保存会报错的情况
  4. hive(3)——在hive中使用自己写的函数(python实现)
  5. CVE-2018-4407 苹果设备远程溢出漏洞
  6. Vi编辑器的使用方法
  7. 汇编--两种过程定义的方式,调用方式。
  8. TCP滑动窗口和拥塞控制机制
  9. 402.移掉K位数字,使得剩下数字最小
  10. linux tr命令书上的一个很好的例子