mysqldump支持进度条吗?

mysqldump支持进度条吗?,mysql,Mysql,在运行mysqldump时,有没有办法确定备份完成了多少或剩下多少?是的,2010年3月27日: 这个新补丁有一个额外的参数--show progress size 默认设置为10000。所以当使用verbose时,每10000 行您将获得一个常规状态输出的行数 特定表已转储 因此,请检查您的版本,必要时进行更新并享受。安装并使用pv(它作为适用于CentOS的yum软件包提供) PV(“管道查看器”)是监控数据进度的工具 通过管道。它可以插入任何正常的管道中 在两个进程之间提供数据传输速度的

在运行mysqldump时,有没有办法确定备份完成了多少或剩下多少?

是的,2010年3月27日:

这个新补丁有一个额外的参数--show progress size 默认设置为10000。所以当使用verbose时,每10000 行您将获得一个常规状态输出的行数 特定表已转储


因此,请检查您的版本,必要时进行更新并享受。

安装并使用
pv
(它作为适用于CentOS的yum软件包提供)

PV(“管道查看器”)是监控数据进度的工具 通过管道。它可以插入任何正常的管道中 在两个进程之间提供数据传输速度的直观指示 正在通过,花了多长时间,离完成还有多远 是的,并且估计需要多长时间才能完工

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

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

控制台输出如下所示:

[==>]20%

查看手册页
man pv
了解更多选项。您可以显示传输速率、经过的时间或传输的字节数等

如果您不知道转储文件的大小,有一种方法可以从表_模式获取MySQL数据库的大小-它不是转储文件的大小,但可能足够接近您的需要:

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;
更新

根据我的经验,在转储整个MySQL服务器时,MySQL转储的实际未压缩大小(使用mysqldump--hex blob选项)大约是从information_schema获得的MySQL数据的活动大小的75%到85%。因此,对于一般解决方案,我可以尝试以下方法:

SIZE\u BYTES=$(mysql——跳过列名答案的完整版本。
获取舍入的db大小,因为pv仅接受整数,并根据注释计算不带索引的数据长度:

将备份创建为带时间戳的文件名:

mysqldump -h"$DB_HOST" \
    -u"$DB_USERNAME" \
    -p"$DB_PASSWORD" \
    --single-transaction \
    --order-by-primary \
    --compress \
    $DB_NAME | pv --progress --size "$db_size"m > "$(date +%Y%m%d)"_backup.sql

我正在寻找一些类似的工具(PV),但我没有转储数据库。当合并两个大型数据库时,使用一些额外的计算和公式,该过程没有列在顶部或HTOP实用程序上,而是仅列在标题上作为io%(仅在启动过程列表中显示,然后它就消失了)。始终显示高使用率,但在本例中,它位于IO端,并且没有像其他进程那样显示在实用程序的bodylist中。我不得不使用IOSTAT查看输出数据库的写入进度,但无法确定是否确实在文件上写入(仅显示xfer速率)。我找到了旧方法,使用Filezilla FTP,比较源数据库大小,因为我正在进行合并,所以在合并文件时必须显示输出文件。在刷新Filezilla目录内容时,我能够看到增量,直到过程成功结束,两个DBs之和的大小按预期合并。(实际上,您可以每分钟刷新一次,并手动计算硬件io转换的时间和处理速度)

我转到了MySQL目录(在我的例子中,实际数据库存储为文件../MySQL/database/tablename.MYD…(MySQL中的文件与包含表格式数据的相应.FRM文件和用作数据库索引的.MYI文件一起保存)只需刷新页面,就可以看到合并后的输出文件的实际大小,事实上,这对我来说是可行的

顺便说一句,TOP和HTOP只显示了MYSQLD在做一些后台处理,但工作马被转移到了de IO端进行输出。我的两个合并DBs都有大约2000万行,每个大约5 Gig,在我的CPU上,双核合并需要数小时,而且在任何地方都没有显示任何进展(即使phpmyadmin超时,但进程仍在继续)。尝试使用PID数字使用PV,但由于我不进行转储,因此无法传输到管道。无论如何,请为那些正在寻找有效且简单的方法来检查输出文件创建进度的人写下这篇文章。它也适用于转储和恢复。请耐心等待,一旦启动,它将完成,这是肯定的,除非SQL出现错误sintax(我以前也遇到过这种情况,在以前的测试中根本没有行被合并,这花了很长时间,但最后什么都没发生,而且没有工具,不可能知道发生了什么,这是一段时间),我建议您可以在提交耗时的实际操作之前尝试一些小样本行,以验证SQL sintax


<> > C++诚然,不完全回答C++程序中进度条的问题,但可以通过这个方法来获取MyD文件的文件大小,并使用源文件大小除以XFER率计算进度条,计算剩余时间。诚挚的问候。

< P> MySQL 5.7 +后,您可以使用。 虽然它不显示进度条,但仍会显示如下一些进度:

Dump progress: 1/1 tables, 0/191 rows
Dump progress: 16/17 tables, 19959/116836 rows
Dump progress: 18/19 tables, 22959/117032 rows
Dump progress: 19/21 tables, 24459/118851 rows
Dump progress: 19/22 tables, 26959/118852 rows
Dump progress: 21/23 tables, 28545/119020 rows
Dump progress: 22/23 tables, 30045/119020 rows
...
刚刚创建的Bash脚本受和的启发

有一个输出示例:

❯ ./bin/db/dump xxx
[2020-08-19 09:54:59+02:00] [INFO] Dumping database 'master' (≈5.4GiB) into ./bin/db/master.sql...
5.40GiB 0:07:56 [11.6MiB/s] [===========================================================================>] 100%
[2020-08-19 10:02:56+02:00] [INFO] Done.
[2020-08-19 10:02:56+02:00] [INFO] Dumping database 'second_db' (≈2.2GiB) into ./bin/db/second_db.sql...
 905MiB 0:01:38 [1.34MiB/s] [==============================>                                              ] 41% ETA 0:02:17

我正在为Win32(x86)使用mysqldump版本10.13发行版5.5.11,但它似乎没有使用此修补程序构建。如何确定此修补程序是否已进入稳定版本?mysqldump--help | grep progress#Not output mysqldump--版本mysqldump版本10.13发行版5.6.10,用于Linux(x86#64)
mysqldump--help | grep progress
对于
mysqldump版本10.13发行版5.6.22,对于osx10.10(x86_64)
是空白的。对于
10.13发行版5.5.43-37.2,对于debian linux gnu(x86_64)
来自Perconastil blank
10.13发行版5.7.19,对于linux(x86_64)<代码> >由于转储中没有出现索引,<>代码>索引x>长度>代码>应考虑删除.<代码>进度参数。在我的情况下(版本1.5.3),它意味着显示
❯ ./bin/db/dump xxx
[2020-08-19 09:54:59+02:00] [INFO] Dumping database 'master' (≈5.4GiB) into ./bin/db/master.sql...
5.40GiB 0:07:56 [11.6MiB/s] [===========================================================================>] 100%
[2020-08-19 10:02:56+02:00] [INFO] Done.
[2020-08-19 10:02:56+02:00] [INFO] Dumping database 'second_db' (≈2.2GiB) into ./bin/db/second_db.sql...
 905MiB 0:01:38 [1.34MiB/s] [==============================>                                              ] 41% ETA 0:02:17