在 mysqldump 运行时,有没有办法确定已完成多少备份或剩余多少备份?
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