备份校验两不误,MySQL自动备份还原校验设计详解
《备份校验两不误,MySQL自动备份还原校验设计详解》要点:
背景最近关于数据库故障出现的问题较多,不论大小公司对数据的备份要求都很高,但对校验数据备份的有效性要求更为迫切,很多公司对于自动备份和还原都已经形成体系,但对于还原后的备份有效性校验可能都不太完善,而且目前网上也没有较为完善的检验机制(可能我没找到). 对数据库备份的有效性校验的方法或样例选择,直接关系到备份数据的质量指标.本文将分享我做的一个设计,此设计是直接采用线上执行的SQL提取出select,包括复杂join类型的SQL加上当前存在的库及表信息,提高了备份校验的准确性. 这是我在申请数据库相关专利时推演出来的方案,在寻找一个好的校验备份还原后的数据衡量指标,偶然地和备份还原进行结合时出现了这个设计.当数据库实例越来越多时,这个有效性校验的需求会越来越强. 下面将简单介绍一下我的校验数据的设计方案,或许它能给你一个思路或想法,当然我也希望能有其他好的方案出来,共同学习.(注:部分信息做了脱敏处理) 系统处理流程程序处理流程如下: 根据上面的流程图,大致分为5个步骤,有6个脚本程序来完成这个流程,每个步骤其实不是很难,实际中可根据自己的业务特定进行完善,下面我简单介绍此流程中主要的几个功能. 功能介绍
注:在下面演示过程中以手动形式,可根据公司具体情况设置为自动. 环境介绍数据库机器:172.16.20.5 部署1、备份机器rsync部署 对于数据中心做备份之前采取过如下几个方案.我简单概括一下: NFS:由一块设备进行网络远程挂载,只需安装NFS服务即可,操作简单.但是有个问题就是当NFS服务出现问题或网络中断时你去使用磁盘会出现挂起的现象. 重要部分如下: 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)库表汇报程序地址:自行下载和修改 2)SQL汇报程序 6、数据库备份还原 下载备份并还原(简单分解介绍): 用 rsync 下载备份到本地,并解压 恢复命令: 7、校验 此时才是整个流程设计的重点,针对还原后的数据,怎么做校验才是重要的,而且校验的样例或方法直接关系数据备份有效性的指标. 1)还原后数据库表的校验 程序地址:https://github.com/kevin6386/db_table_diff/blob/master/db_table_diff 比较结果如下: 邮件截图 2)还原后数据SQL的校验 程序地址:https://github.com/kevin6386/db_sql_diff 比较结果如下: 邮件截图:如果正常则附件会有SQL,否则为空. 异常截图 (编辑:ASP站长网) |