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,否则为空。
异常截图
出现异常有如下几种情况:
备份时和general_log提取有时间的差异;当获取SQL出现在备份前或备份后有数据修改的情况下会出现。(可采用低峰时或很少修改的字段进行提取样例)
某些表还原异常,数据丢失。(比如我遇到过触发器的情况,表与表有依赖)
我用从库的备份比对主库的SQL。(有可能从库和主库不一致)
备份时有丢失的表或记录。(有时备份的命令问题或漏备份)
附件SQL信息
8、关于备份的汇报
我是汇报每天的备份大小及文件名,然后写SQL比对今天的备份和前2天的信息。
如下:
总结
设计完这个方案后开始编写分程序花了一段时间,同时感谢我的同事帮我重复测试这个设计方案,发现之前备份还原过程中出现的问题改善了很多,重要的是不用人工去抽取还原后的数据结果。当这个方案固定后基本上很少有人工的参与,减少了人工还原备份和校验备份重复的工作;并且可以准确地知道哪部分有问题,减少了对数据库备份是否正常的担忧。当然还有很多要完善的方面,欢迎有兴趣的朋友在留言区提出建议,一起交流