Rus*_*aue 62
安装和使用pv(它作为CentOS的yum包提供)
http://www.ivarch.com/programs/pv.shtml
PV("Pipe Viewer")是一种通过管道监控数据进度的工具.它可以插入到两个进程之间的任何正常管道中,以直观地指示数据通过的速度,采取的时间,接近完成的时间以及估计完成之前的时间.
假设生成的dumpfile.sql文件的期望大小为100m(100兆字节),则使用pv如下:
mysqldump <parameters> | pv --progress --size 100m > dumpfile.sql
控制台输出如下所示:
[===>            ] 20%
查看手册页man pv以获取更多选项.您可以显示传输速率,已经过了多长时间,传输了多少字节等等.
如果你不知道转储文件的大小,有一种方法可以从table_schema获取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_BYTES=$(mysql --skip-column-names <parameters> <<< 'SELECT ROUND(SUM(data_length) * 0.8) AS "size_bytes" FROM information_schema.TABLES;')
mysqldump <parameters> --hex-blob | pv --progress --size $SIZE_BYTES > dumpfile.sql
xel*_*o52 45
是的,2010年3月27日发布补丁:
这个新补丁有一个额外的参数--show-progress-size,默认设置为10,000.因此,当使用--verbose时,每10,000行您将获得转储的特定表的行数的常规状态输出.
所以检查你的版本,如果需要更新并享受.
poc*_*sov 10
完整版的Russell E Glaue答案.得到舍入的db大小,因为pv只接受整数,并且根据@mtoloo注释计算没有索引的数据长度:
db_size=$(mysql  -h"$DB_HOST" \
    -u"$DB_USERNAME" \
    -p"$DB_PASSWORD" \
    --silent \
    --skip-column-names \
    -e "SELECT ROUND(SUM(data_length) / 1024 / 1024, 0) \
        FROM information_schema.TABLES \
        WHERE table_schema='$DB_NAME';")
创建时间戳文件名的备份:
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
小智 7
MySQL 5.7+ 之后,您可以使用mysqlpump。虽然它不显示进度条,但它仍然显示一些进度,如下所示:
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
...