是否有一种方法可以让mysqldump进度条显示用户备份的状态?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (275)

我在想,在mysqldump运行时,是否有任何方法可以确定备份完成了多少,或者还有多少备份还在运行?

我想向我的用户提供一个控制台进度条,向他们展示备份的状态...

顺便说一下,我想用标准的c++编写上面的程序,平台将是linux。谢谢!

提问于
用户回答回答于

这个新的补丁有一个额外的参数显示进度大小,默认设置为10000。因此,当使用--详细时,每10000行您将得到一个特定表转储的行数的定期状态输出。

因此,检查版本,更新,如果需要。

用户回答回答于

安装和使用pv(它可作为CentOS的YUM软件包提供)

PV(“管道查看器”)是一种通过管道监视数据进度的工具。它可以插入到两个进程之间的任何正常管道中,以便直观地显示数据通过的速度、所用的时间、离完成的距离有多近,以及估计数据离完成所需的时间。

假设生成的dumpfile.sql文件的预期大小为100米(100兆字节),则使用pv将如下:

mysqldump <parameters> | pv --progress --size 100m > dumpfile.sql

控制台输出如下所示:

[===> ] 20%

看手册页man pv寻找更多的选择。可以显示传输速率,或者已经过了多长时间,或者传输了多少字节,等等。

如果不知道转储文件的大小,可以从表中获取MySQL数据库的大小。_schema-它将不是转储文件的大小,但它可能足够接近需要:

SELECT table_schema AS "Database", ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema;

扫码关注云+社区