在mysqldump
运行时,有没有办法确定已完成多少备份或剩余多少备份?
发布于 2017-07-14 00:29:17
Russell E Glaue答案的完整版本。根据@mtoloo注释,获取四舍五入的数据库大小作为pv仅接受整数,并计算不带索引的数据长度:
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
发布于 2020-06-02 18:37:07
在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
...
发布于 2020-08-19 16:13:18
受Russell E Glaue和pocheptsov的启发,我刚刚创建了Bash script MySQL / MariaDB Dump Helper。
下面是一个输出示例:
❯ ./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
https://stackoverflow.com/questions/4852933
复制相似问题