在运行mysqldump
时,有没有办法确定备份完成了多少或剩下多少
安装并使用pv
(它作为适用于CentOS的yum软件包提供)
http://www.ivarch.com/programs/pv.shtml
PV(“管道查看器”)是监控数据进度的工具
通过管道。它可以插入任何正常的管道中
在两个进程之间提供数据传输速度的直观指示
正在通过,花了多长时间,离完成还有多远
是的,并且估计需要多长时间才能完工
假设生成的dumpfile.sql文件的预期大小为100m(100兆字节),则pv
的使用如下:
mysqldump<;参数>;|pv——进度——尺寸100米>;dumpfile.sql
控制台输出如下所示:
[=>;]20%
查看手册页man pv
了解更多选项。您可以显示传输速率、经过的时间或传输的字节数等
如果您不知道转储文件的大小,有一种方法可以从表_模式获取MySQL数据库的大小-它不是转储文件的大小,但可能足够接近您的需要:
选择表模式作为“数据库”,从信息模式中选择四舍五入(总和(数据长度+索引长度)/1024/1024,2)作为“大小(MB)”。表按表模式分组;
更新
根据我的经验,在转储整个MySQL服务器时,MySQL转储的实际未压缩大小(使用mysqldump–hex blob选项)大约是从information_schema获得的MySQL数据的活动大小的75%到85%。因此,对于一般解决方案,我可以尝试以下方法:
SIZE\u BYTES=$(mysql——跳过列名<;参数>;<;<;'从信息\u schema.TABLES;'中选择舍入(总和(数据长度)*0.8)作为“SIZE\u BYTES”)
mysqldump<;参数>--十六进制blob | pv--进度--大小$size_字节>;dumpfile.sql