LoginSignup
17
17

More than 5 years have passed since last update.

mysqlpump の使い方

Posted at

mysqlpumpとは

  • MySQL5.7(厳密には、MySQL5.7.8)から加わったmysqldumpにはない機能をいくつか持ったバックアップコマンドになっている
  • 用途としては、データベースをダンプする、ダンプしたファイルを別サーバのDBにインポートすることが想定されている(mysqldumpと用途はほぼ同じ)
  • mysqldumpの互換性を気にせず使えるように作られている

mysqlpumpができること

並列dump

  • データベースに含まれるスキーマ及びテーブルに対して並列処理が可能なため、更新中に並列ダンプを行っても整合性のあるバックアップが取得できる > InnoDBの一貫したバックアップを取得するには、--single-transactionをmysqldump同様に指定する必要がある。

ユーザアカウント

  • ユーザアカウント情報のテーブルをINSERT文で出力された権限テーブルではなく、CREATE USER, GRANTコマンドで出力ができる

データリストア

  • 処理時間を削減するために、インデックス作成とデータリストアを同時に行わずに、データをINSERTしたからインデックスを作成している

出力の圧縮

  • 別サーバにバックアップファイルを転送する必要がある場合、データ自体を圧縮することができる。--compressオプションで対応可能なため、転送時間・帯域の節約ができる。

バックアップの進捗出力

  • 進捗状況を出力するコマンドがあるため、どのくらい完了しているか、あとどのくらいかかるかを表示してくれるので、とても便利。

イメージとしては、こんな感じで出力される。

Dump progress: 0/2 tables, 250/9213 rows
Dump progress: 0/2 tables, 1000/9213 rows
Dump progress: 0/2 tables, 3000/9213 rows
Dump completed in 1580 milliseconds

バックアップとリストア

  • バックアップ
mysqlpump --single-transaction --users > dump.sql
  • リストア
$ mysql -uroot -p < dump.sql

mysqlpumpのデータベース指定

全データベースをバックアップする

$ mysqlpump
(or)
$ mysqlpump --all-databases

バックアップ対象のデータベースをリスト化する

$ mysqlpump --databases=db1, db2, db3

ワイルドカードを使って、バックアップ"する"データベースを指定する

$ mysqlpump --include-databases=db%

ワイルドカードを使って、バックアップ"しない"データベースを指定する

$ mysqlpump --exclude-databases=db%

指定したデータベース以下のテーブルのみを指定する

$ mysqlpump db1 table1 table2

キューを増やして、mysqlpumpを実行する

キューはデフォルト1で実行されており、キューに対してのスレッド数は、デフォルト2になっている。
--parallel-schemasオプションを使用することでキューを増やすことができ、--default-parallelismオプションを使うと指定した数のスレッド数で実行することができる

  • 全データベースを4スレッドでダンプする
$ mysqlpump --default-parallelism=4
  • db1,db2に対しては、最初のキューで5スレッド、db3,db4,db5に対しては、2番目のキューで3スレッド、その他のテーブルについては、3スレッドでダンプをする
$ mysqlpump --parallel-schemas=5:db1,db2 --parallel-schemas=3:db3,db4,db5 --default-parallelism=3 

注意点

1つのテーブルを複数スレッドでダンプすることはできないため、テーブル数がスレッド数よりも少ない場合は、余るスレッドが発生して活用することはできない。

17
17
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
17
17