每周我需要在本地开发环境中运行一次大型数据库更新,如下所示:
$ 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只有一个巨大的表,所以大部分进程都被困在这个表中,使得这个选项没有什么帮助)
所有的数据库.sql.gz文件是标准的gzipped mysqldumps,所以我不认为我可以在转储中构建任何东西来更新.(但如果我错过了什么,我愿意接受)
Bounty Rules
答案必须:
- 提供有用且合理准确的进度(如
scp
(首选!)或者通过一个简单的进度数据库表(可以轻松访问). - 不 destruct 常规
mysqldump
出口或常规gunzip ... | mysql
进口(适用于其他工程师,他们可能不会使用你提出的任何东西) - 不要让我的DBA心脏病发作——所以在特殊的
mysqldump
或其他mysql分支请求上保持轻松.