加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 服务器 > 安全 > 正文

备份校验两不误,MySQL自动备份还原校验设计详解

发布时间:2021-01-12 15:23:36 所属栏目:安全 来源:网络整理
导读:《备份校验两不误,MySQL自动备份还原校验设计详解》要点: 本文介绍了备份校验两不误,MySQL自动备份还原校验设计详解,希望对您有用。如果有疑问,可以联系我们。 作者介绍 庞阔,优朋普乐传媒运维基础部经理.负责数据库运营管理及平台设计开发,监控设计改
副标题[/!--empirenews.page--]

《备份校验两不误,MySQL自动备份还原校验设计详解》要点:
本文介绍了备份校验两不误,MySQL自动备份还原校验设计详解,希望对您有用。如果有疑问,可以联系我们。

作者介绍
庞阔,优朋普乐传媒运维基础部经理.负责数据库运营管理及平台设计开发,监控设计改进,问题跟踪处理,机房网络维护管理,目前四个专利已在专利局申请中.擅长数据库运维管理及Shell、Perl、PHP编写.

背景

最近关于数据库故障出现的问题较多,不论大小公司对数据的备份要求都很高,但对校验数据备份的有效性要求更为迫切,很多公司对于自动备份和还原都已经形成体系,但对于还原后的备份有效性校验可能都不太完善,而且目前网上也没有较为完善的检验机制(可能我没找到).

对数据库备份的有效性校验的方法或样例选择,直接关系到备份数据的质量指标.本文将分享我做的一个设计,此设计是直接采用线上执行的SQL提取出select,包括复杂join类型的SQL加上当前存在的库及表信息,提高了备份校验的准确性.

这是我在申请数据库相关专利时推演出来的方案,在寻找一个好的校验备份还原后的数据衡量指标,偶然地和备份还原进行结合时出现了这个设计.当数据库实例越来越多时,这个有效性校验的需求会越来越强.

下面将简单介绍一下我的校验数据的设计方案,或许它能给你一个思路或想法,当然我也希望能有其他好的方案出来,共同学习.(注:部分信息做了脱敏处理)

系统处理流程

程序处理流程如下:

根据上面的流程图,大致分为5个步骤,有6个脚本程序来完成这个流程,每个步骤其实不是很难,实际中可根据自己的业务特定进行完善,下面我简单介绍此流程中主要的几个功能.

功能介绍

  1. 自动备份功能
    (可自行设置,我是配置的定时任务,平台在对接中)
  2. 自动还原功能
    自动下载备份并还原.
  3. SQL及库表自动上报功能
    1)上报本机数据库的库表信息,主要用来比对还原后库表信息是否一一对应,如果对应正常,否则异常,进行报警处理.
    2)汇报SQL,为保证SQL的真实性,此方法是监听general_log,分析后获取Select 类型SQL,并执行此SQL 降获取到的sql 及查到的值 汇报到数据中心作为样例SQL使用.
  4. 还原后库表及SQL自动比对功能
    1)还原后自动调用数据库中心获取库表信息,进行一一比对.
    2)获取SQL信息进行原来和还原后数据值的匹配校验,如果对应则正常,否则为异常.

注:在下面演示过程中以手动形式,可根据公司具体情况设置为自动.

环境介绍

数据库机器:172.16.20.5
备份机器:172.16.20.6
还原机器:172.16.20.7
备份工具:mydumper
编程语言:Shell+Perl
备份传输工具:rsync

部署

1、备份机器rsync部署

对于数据中心做备份之前采取过如下几个方案.我简单概括一下:

NFS:由一块设备进行网络远程挂载,只需安装NFS服务即可,操作简单.但是有个问题就是当NFS服务出现问题或网络中断时你去使用磁盘会出现挂起的现象.
FTP:也用过FTP来做备份服务,但有时会出现登录失败的现象,对于不同目录权限设置较为复杂,不方便维护;上传下载编写脚本也不是太方便.
Rsync:改为Rsync,主要是配置简单,上传下载也简单的多,一条命令即可;对于增量的传输很有用.

重要部分如下:
[back5]
path = /opt/mysql_bak/172.16.20.5
comment = www file
ignore errors
read only = false
list = false
uid = root
gid = root

2、数据库机器和还原机器安装mydumper

mydumper第三方开用于对MySQL数据库进行多线程备份和恢复的开源工具.开发人员主要来自MySQL、Facebook和SkySQL公司,目前由Percona公司开发和维护,是Percona Remote DBA项目的重要组成部分;不同于官方的mysqldump、mysqlpump的是对库表备份和还原采用多线程,对于快速备份和恢复是不错的选择;当然还有percona的xtrabackup相当于物理备份的工具,但是耗费空间较大.

安装请参考官网:https://launchpad.net/mydumper/+download

3、数据库上执行备份脚本

脚本如下:

4、数据中心表结构设计

在数据中心创建下面的表,这些表主要用来存储备份时上报的库表信息和SQL信息,用后续步骤还原校验时做提供样例值.

库表汇报的表结构

SQL 表结构

5、数据库机器上汇报

1)库表汇报程序地址:自行下载和修改
https://github.com/kevin6386/db_table_report/blob/master/db_table_report
运行即可.

2)SQL汇报程序
程序地址:https://github.com/kevin6386/db_sql_report/blob/master/db_sql_report
运行即可.

6、数据库备份还原

下载备份并还原(简单分解介绍):

用 rsync 下载备份到本地,并解压
rsync -zrtoapg –progress root@172.16.20.6::back5/备份文件名 ./

恢复命令:
/usr/local/bin/myloader -u user -p pass -o -d 备份地址 -t 8

7、校验

此时才是整个流程设计的重点,针对还原后的数据,怎么做校验才是重要的,而且校验的样例或方法直接关系数据备份有效性的指标.

1)还原后数据库表的校验

程序地址:https://github.com/kevin6386/db_table_diff/blob/master/db_table_diff

比较结果如下:

邮件截图

2)还原后数据SQL的校验

程序地址:https://github.com/kevin6386/db_sql_diff

比较结果如下:

邮件截图:如果正常则附件会有SQL,否则为空.

异常截图

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读