每周一次,我需要在本地开发环境中运行一次巨大的数据库更新,如下所示:
$ 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 &
我尝试在一夜之间运行这些,因为它可能需要几个小时才能完成。
你能帮我想出一种方法来显示这些任务的进展吗?
以下是一些猜测:
- 获取数据库的未压缩文件大小并与我的本地数据库大小进行比较
- 在mysql中运行
show processlist
看看它当前插入的是什么表(我目前的方法,但是有些表很大,而且我的至少一个db只有一个巨大的表所以大部分进程都卡在这个表中,留下这个选项小于有帮助)
所有 db.sql.gz 文件都是标准 gzip 压缩的 mysqldump,所以我认为我无法在转储中构建任何内容来给我更新。(但如果我遗漏了什么,我对此持开放态度)
赏金规则
答案必须:
- 提供有用且相当准确的进度(可视化
scp
(首选!)或通过可以轻松访问的简单进度数据库表)。 - 不破坏常规
mysqldump
导出或常规gunzip ... | mysql
导入(对于可能不会使用您想出的任何东西的其他工程师) - 不要让我的 DBA 心脏病发作——所以在特殊
mysqldump
或替代 mysql 分支请求上保持轻松。