首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有任何方法显示在“`gunzip < database.sql.gz \ mysql ...`进程”上取得的进展?

是否有任何方法显示在“`gunzip < database.sql.gz \ mysql ...`进程”上取得的进展?
EN

Stack Overflow用户
提问于 2013-10-25 20:23:05
回答 2查看 36K关注 0票数 49

每周一次,我需要在本地开发环境中运行一个大型数据库更新,如下所示:

代码语言:javascript
复制
$ gunzip < /path/to/database1.sql.gz | mysql -uUSER -p database1 &
$ gunzip < /path/to/database2.sql.gz | mysql -uUSER -p database2 &
$ gunzip < /path/to/database3.sql.gz | mysql -uUSER -p database3 &

我试着在一夜之间运行,因为它可能需要几个小时才能完成。

你能帮我想出一种方法来展示这些任务的进展吗?

以下是一些猜测:

  1. 获取数据库的未压缩文件大小,并与本地db大小进行比较。
  2. 在mysql中运行show processlist以查看它当前正在插入的表(我的当前方法,但有些表很大,而且我的至少一个db只有一个巨大的表,因此大部分进程都卡在这个表中,留下这个选项不太有用)

所有的db.sql.gz文件都是标准的gzipped,所以我不认为我可以在转储中构建任何东西来更新。(但如果我漏掉了什么东西,我会敞开心扉)

Bounty Rules

答复必须:

  1. 提供有用的和合理准确的进度(或者像scp这样的可视化的(首选!)或者通过一个可以轻松访问的简单进度数据库表)。
  2. 不中断常规mysqldump导出或常规gunzip ... | mysql导入(对于可能不使用您想出的任何内容的其他工程师)
  3. 不要给我的DBA一个心脏病发作的- so,在特殊的mysqldump或备用mysql分支请求上保持轻松。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-28 04:21:43

您可以在命令中使用-v :详细模式(显示进度),或者有另一种使用管道查看器(pv)的方法,它显示gzip,gunzip命令的进度,如下所示:

代码语言:javascript
复制
$ pv database1.sql.gz | gunzip | mysql -u root -p database1

这将输出与scp类似的进度:

代码语言:javascript
复制
$ pv database1.sql.gz | gunzip | mysql -uroot -p database1
  593MiB 1:00:33 [ 225kiB/s] [====================>              ] 58% ETA 0:42:25

您还可以使用管道查看器监视mysqldump:

代码语言:javascript
复制
mysqldump -uroot -p database1 | pv | gzip -9 > database1.sql.gz

如果您还没有pv,您可以通过以下方式安装它:

代码语言:javascript
复制
yum install pv

或者使用macport

代码语言:javascript
复制
sudo port install pv

或者用自制的

代码语言:javascript
复制
brew install pv
票数 137
EN

Stack Overflow用户

发布于 2013-10-28 11:01:19

我想我应该在加载数据之前执行一个drop数据库,然后在数据库目录中运行一个连续的"du -sh“。如果我知道原始数据库目录的大小(为什么不知道呢?)然后我可以用它作为进度监视器。分局是可下流的吗?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19598797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档