SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

MySQLのダンプからのリストア所要時間の予想

問題

今、10GBぐらいあるダンプファイルをMySQLのデータベースにリストアしているんだけど、

いったいいつ頃終わるんでしょうね?

MySQL

答え1

私がよく触るある環境では1GBあたり2分ぐらいかかります。

そんな感じで、いつも作業するときに、時間を気にする癖をつけておくとよいです。

SSDとHDD、物理サーバーとクラウド環境などで違うと思うので、日ごろから気にしておくのが良いです。

答え2

ダンプを投入するMySQLが、バイナリログが出力される設定になっていたら、バイナリログの容量が目安になります。

MySQLのダンプファイルはSQLのテキストデータで、バイナリログも実行されたSQLが書かれていくので、投入が終わるころには、バイナリログがだいたいダンプファイルの容量分増えます。

15分でバイナリログが5GB増えていたら、10GBのダンプが入り終わるのはあと15分、トータルで30分ぐらいかなと予想できます。

答え3

ダンプファイルには、データベースのアルファベット順、テーブル名のアルファベット順でSQLが書き込まれているので、MySQLでSHOW PROCESSLIST; をして、どのあたりまで進んでいるかを見れば、時間の予想は難しいとしても、データベース数、テーブル数からみた進捗率ぐらいはわかります。

おまけ

ダンプファイルがgzipで圧縮されていることがありますが、単純なテキストファイルであればgzipで10分の1ぐらいに小さくなるので、圧縮されたサイズを10倍すると元のダンプファイルのサイズのだいたいの目安になります。

なお、もともと圧縮されているバイナリデータ(JPEG画像、zipファイルなど)を多く含んだデータベースなどでは、ダンプファイルの圧縮で圧縮ファイルが思ったほど小さくなっていないこともあります。

関連するメモ

コメント