Navicat备份原理分析以及测试
之前有次恢复数据库涉及到备份恢复问题,正好测一下Navicat这个自带的备份恢复跟sql导出再执行有什么区别,至于备份教程太多,故本文章不包含教程,仅测试性能及分析原理,如有错误,还请各位大佬指正;
因为业务特殊性,本文相关库名表名等业务内容均已打码
目录
一、备份
寻找一个数据量适中的数据库,使用Navicat备份功能:
数据量共四万左右,耗时1:45秒,生成文件名:"20191128180233.nb3",结果如下:
使用sql导出功能(转储SQL文件-结构和数据)
数据量同样四万,耗时1:46秒,生成文件名"goliveplus_pp_test.sql",结果如下:
二、比较
文件大小比较(通过语句查询此库数据占用93.68 MB,索引占用0.23MB)
比较结果如下,sql文件占用76.5MB , 备份文件nb3占用4.94MB(差距巨大有没有):
三、还原
本地建立库backup1和backup2,规定相同的编码格式
打开backup1,运行sql文件
sql文件运行花费1:12秒,数据验证完整并包含索引等内容,结果如下:
打开backup2,复制备份到navicat中,运行还原;
nb3文件还原花费了1:29秒,数据验证完整并包含索引等内容,结果如下:
四、查看备份
database_test.sql查看内容:
20191128180233.nb3查看内容:
五、分析
导出原理:
sql语句:大家都懂,就是语句导出,包含建表语句,索引主键,数据插入sql等;
navicat备份:不同于语句导出,在数据查询的同时进行二进制数据压缩,所以备份效率相似(甚至略高,当然也有可能是性能波动,但是没有比sql导出更慢),空间占用极小;
还原原理:
sql语句:进行sql执行,建表插数据;
navicat备份:首先解压文件(在信息日志中可看到Decompressing backup file...),再同sql语句文件一样,进行sql执行,建表插数据,所以navicat备份还原慢于sql语句还原(也有可能不是解压成sql语句,但是明显效率要比SQL执行效率要低);
六、总结
1.数据量小的情况下:推荐navicat备份,备份效率相同,占用体积极小,还原速度也不慢;
2.数据量大的情况下:
2.1.急需还原数据:推荐sql导出,备份效率相同,占用体积大,但是还原速度快;
2.2.仅做日常备份:推荐navicat备份,备份效率相同,占用体积极小,但是还原速度稍低(可能会在数据量越大的情况下差距越大);
讲在最后
- navicat支持备份文件提取sql文件,不用担心备份出来的文件,如果想还原只能用navicat还原的问题(吃瓜群众:那提取SQL文件需要Navicat吗;我:滚(ノ`Д)ノ;)
- navicat支持设置计划任务(仅windows),给系统添加自动运行任务,定时备份文件(或者导出sql等),还可以在操作执行后发邮件
如果本文解决了你的问题,不妨点个赞,让我知道这篇文章有帮助到大家我就很开心了。
仍然有问题的朋友,可以在评论区留下你的问题,或者发我邮箱:[email protected],力所能及之处定当鼎力相助。