MySQL备份恢复的自动化设计

MySQL的备份恢复是一直想要改进的地方,其中恢复是重中之重,这部分的工作要做成平台化的工作,算是有了前期的很多铺垫和延迟,最近在和同事的共同协作下,总算有了一些眉目出来。

首先备份恢复是两类工作,如果一个相对来说完整的备份,从规划来说,是分为三层:全量备份,增量备份和binlog备份,恢复同理也是三类,即全量恢复,增量恢复和binlog恢复。

关于备份的选型,如果选择了逻辑备份,那么增量备份就是难点,但是恢复的灵活性会很便捷高效,如果选择了物理备份的方式,那么增量备份就很自然了,对于表级别的恢复来说,代价相对较高。

备份的工作,总体来说,看板还是hi需要的,零零散散收集了一些需求,最后对Redis的备份做了下面的看板,MySQL的备份看板略有差别,看板指标是类似的。

来进入平台自动化的设计中,首先从架构设计上,我是把这个阶段做了拆分,前后端分离的方式,后端的逻辑完全通过API的方式来交互,views层只做简单的逻辑和数据映射。

在API的设计上,通用是使用了Token的安全认证,而在效率上,本地调用了改造成了免token的反复调用。

在接口调用中,使用了ansible_adhoc来实现,脚本化的工作则相对来说会更加灵活,shell还是python怎么合适怎么来,只要脚本符合基本的标准,标准是什么,参数的描述,要有明确的输出。

在产品的设计中,我是通过CMDB提供的元数据来作为备份或者恢复的入口。为了保证功能的快速迭代和最低粒度,目前只保证单个实例的备份可行,如果有多个备份并行的情况,是优先考虑异步的,这里的优选方式是celery.

当然从任务调度从一个更高的角度来说,可以拆分为任务和调度两个模块,设置是两个独立的系统,任务系统和调度系统。比如备份就是一个任务。

前端的设计会分为6个主要的页面,备份/恢复各有一个入口页面,通过这个页面能够跳转到全量或者是增量备份,备份恢复个有两个页面。

先来说备份,备份的入口页面是这样的。可以选择自己的需求来过滤。

如果是全量备份,则会收集到概要信息和MySQL实例的明细信息,当然还有一个更直接的按钮,开启备份任务。

上面的是一个tab页面,如果按照目前的方式,可以查看到近7天的备份情况,所以我们要做全备,全量恢复,增量恢复,这些基本信息都是需要的。

增量的备份目前是使用binlog的方式来处理,后续继续完善xtracbackup的功能,满足一定频率的增量备份,来大幅度降低手工运维带来的痛苦。

全量恢复的入库哦页面如下:

如果选择了全量恢复,即异机恢复的场景,我们只需要输入两个参数,一个是备机的IP信息,另外一个是选择备份的日期。

如果是增量备份,则稍微复杂些。里面的亮点在于如果要恢复某一个库,指定了备机的IP,然后会得到binlog层面的反馈,能够把数据恢复到秒级。当然改进之处一个是基于偏移量的恢复,一个是基于时间范围。

如果把整个过程要贯穿起来,也是一个不断摸索的状态,代码不够优美,逻辑不够清晰,数据存在诸多问题,要从这些基于目前的情况来看,只能说解决了一些现实的问题。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2018-06-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

linux性能监控工具nmon

nmon是什么 nmon 是linux的一个性能数据收集分析工具,简单易用 可以方便的收集CPU、内存、硬盘、网络等状态数据,平时查看这些数据需要使用不同...

36711
来自专栏乐沙弥的世界

从0到1学习Oracle--备份与恢复-程国华-专题视频课程

版权声明:本文为博主原创文章,欢迎扩散,扩散请务必注明出处。 https://blog.csdn.net/robinson_0612/article/d...

1282
来自专栏从零开始学自动化测试

selenium+python自动化94-弹出层死活定位不到

前言 部分小伙伴学了selenium的alert后,就不管啥弹出框都去用alert,这是行不通的,看到弹出框,先要确定是不是alert,是才能用,不是的话肯定不...

45310
来自专栏云计算教程系列

Linux备份工具简介

备份涵盖的范围很广,我们可以备份出一个重要文件的副本,也可以备份出一个完整的磁盘的快照。许多桌面应用程序和操作系统会自动进行数据备份。相比之下,腾讯云是一个灵活...

3041
来自专栏黑白安全

Linux 系统的 beep 包中存在竞争条件漏洞,可被黑客利用探测机密文件

Linux 发行系统 Debian 和 Ubuntu 中预装的 beep 包存在竞争条件漏洞,黑客可利用这个漏洞探测到计算机中的文件(包括 root 用户的机密...

752
来自专栏BeJavaGod

fastdfs 图片服务器 使用java端作为客户端上传图片

之前有说道搭建fastdfs作为图片服务器,但是没有说明如何真正在代码里调用,那么今天大致讲一下,如何使用java客户端进行上传 首先你得要有一个客户端,导入到...

4354
来自专栏ytkah

织梦DEDECMS后台精简删除不需要的文件

如果是一开始就不想要的话,安装版plus目录下进行如下操作。 删除:guestbook文件夹【留言板,后面我们安装更合适的留言本插件】; 删除:task文件夹和...

6454
来自专栏阿杜的世界

OAuth认证 学习与实践

OAuth是用户、服务提供商(用户信息的提供者)、第三方网站(用户资源的使用者)三者之间通过协作来完成信息的请求、授权、使用的协议。

792
来自专栏深度学习思考者

Opencv学习(一)——安装配置遇到的问题

Opencv的安装配置网上教程一大堆,本文主要是针对安装配置完后可能遇到的一些问题(比如dll的缺失等问题)。不过为了方便大家,还是写出安装配置的简单过程 一 ...

2116
来自专栏北京马哥教育

用 Python 进行微信公众号开发

1.1K5

扫码关注云+社区

领取腾讯云代金券