gpt4 book ai didi

mysql - mysqldump 是否支持进度条?

转载 作者:IT老高 更新时间:2023-10-28 12:54:09 25 4
gpt4 key购买 nike

有什么方法可以确定,当 mysqldump 运行时,备份完成了多少或剩余多少?

最佳答案

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

http://www.ivarch.com/programs/pv.shtml

PV ("Pipe Viewer") is a tool for monitoring the progress of data through a pipeline. It can be inserted into any normal pipeline between two processes to give a visual indication of how quickly data is passing through, how long it has taken, how near to completion it is, and an estimate of how long it will be until completion.

假设生成的 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 选项)大约是从获取的 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

关于mysql - mysqldump 是否支持进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4852933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com