LoginSignup
6
6

More than 5 years have passed since last update.

mysqldumpとXtraBackupによるバックアップ/リストアを比較してみる

Posted at

はじめに

mysqldumpとXtraBackup、それぞれを利用したMySQLバックアップ/リストアの比較をしてみます。

環境

  • CentOS7 64bit
  • 1 vCPU
  • Mem:1GB
  • MySQL5.7
  • XtraBackup2.4.7
  • MySQLデータディレクトリ:12GB

サマリ

バックアップファイル容量 バックアップ時間 リストア時間
mysqldump 1.4GB 10分 69分
XtraBackup 3.7GB 14分 5分

バックアップ

mysqldump

command
# time mysqldump -uroot --all-databases --opt --add-drop-table --single-transaction | gzip > mysqldump_`date +"%Y%m%d"`.sql.gz

real    9m34.698s
user    6m29.454s
sys 0m4.611s

# ll mysqldump_20170427.sql.gz
-rw-r--r-- 1 root root 1482934317  4月 27 14:56 mysqldump_20170427.sql.gz

XtraBackup

command
# time innobackupex --user=root --stream=tar /tmp | gzip - > /tmp/xtrabackup_`date +"%Y%m%d"`.tgz

real    13m43.295s
user    13m20.367s
sys 0m13.710s

# ll xtrabackup_20170427.tgz
-rw-r--r-- 1 root root 3747612166  4月 27 16:03 xtrabackup_20170427.tgz

リストア

mysqldump

command
# time zcat mysqldump_20170427.sql.gz | mysql -uroot

real    68m53.569s
user    2m13.969s
sys 0m3.885s

XtraBackup

command
# time tar zxvf xtrabackup_20170427.tgz

real    3m4.192s
user    1m33.344s
sys 0m12.697s

# time innobackupex --apply-log /tmp/xtrabackup/

real    0m4.099s
user    0m0.077s
sys 0m0.074s

# service mysqld stop
# mv /var/lib/mysql /var/lib/mysql.bk
# mv /tmp/xtrabackup /var/lib/mysql
# chown -R mysql:mysql /var/lib/mysql
# service mysqld start

まとめ

XtraBackupによるリストアは、ほぼ解凍の時間だけなのでmysqldumpに比べて非常に高速なのが分かります。
単純なgzip圧縮だとXtraBackupの方が容量・時間ともにmysqldumpに劣りますが、こちらのように圧縮形式や並列化をチューニングすることでパフォーマンス向上が見込めると思います。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6