mysqldump vs mysqlpump


17

mysqlpumpについて聞いたばかりです。MySQL5.7でリリースされたようですが、MySQL 5.7にはmysqldumpがまだ含まれています。どちらもバックアッププログラムですが、主な違いを誰かが要約できますか?それらの1つがより適切に機能するシナリオはありますか?mysqldumpはmysqlpumpで段階的に廃止されますか?


これは、2つの類似したツールをほぼ同じ名前にすることを意味します。
エリック

それが「あるよう@Erikは思えるのp arallel D UMPは」とそれができポンプデータに高速..しかし、そうでない場合は、私は同意するものとします。
jkavalik

1
MyDumperにも興味があるかもしれません。プロジェクトは:-(年以上で移動していないので、悪くないもの- mysqlpumpはそれからのアイデアのカップルを取ったことが表示されます
Vérace

いくつかのパフォーマンステストを見てみたいです。
ライアンフォーリー

XtradbBackupはもう1つの重大な候補です。
リックジェームズ

回答:


16

私がたまたまこれを研究しているので、ここで私が見つけたものの要約を示します。

MySQL開発チームによる2015年のブログ投稿によると mysqlpumpの主な利点は、複数のスレッドを並行して使用してダンプを高速化でき、mysqldumpの後方互換性要件を共有しないことです。改善。

ただし、この投稿では、個々のスレッドがデータベースのさまざまな状態からダンプのセクションを生成する可能性があるため、mysqlpumpは「現在、汎用バックアップの代替として安全ではない」と警告しています。mysqldumpを廃止する計画については言及していません。

Giuseppe Maxiaは2015年にmysqlpumpをいじくり回し、ダンプのスピードアップがかなり小さいことを発見しました。彼は、ダンプするオブジェクトを正確に選択する新しい機能を高く評価しましたが、ダンプのロードはシングルスレッドでしか行えず、(mysqldumpとは異なり)ダンプは同じ名前のデータベースにしかロードできないことに注意しました。


2
警告:mysqlpumpクローズドソースソフトウェアです(不確かな未来)。代わりのオープンソースmysqlpumpgithub.com/maxbube/mydumper mydumper
Ivanov

12

また、これら2つのユーティリティの違いを調べてきましたが、@ Neilの回答に記載されていることに加えて、mysqlpumpにmysqldumpよりも少ないオプションがあり、次のようなことは許可されていません。

  • --compatible=
  • --tab、およびそれに関連するオプション:
    • --fields-terminated-by=
    • --fields-enclosed-by=
    • --fields-optionally-enclosed-by=
    • --fields-escaped-by=
    • --lines-terminated-by=
  • --quote-names
  • --add-drop-trigger
  • --allow-keywords
  • --apply-slave-statements
  • --comments
  • --compact
  • --compatible
  • --create-options
  • --delete-master-logs
  • --disable-keys
  • --dump-date
  • --dump-slave
  • --enable-cleartext-plugin
  • --flush-logs
  • --flush-privileges
  • --force
  • --ignore-error
  • --include-master-host-port
  • --lock-all-tables
  • --lock-tables
  • --master-data
  • --no-autocommit
  • --no-tablespaces
  • --opt
  • --order-by-primary
  • --pipe
  • --quick
  • --quote-names
  • --set-gtid-purged
  • --shared-memory-base-name
  • --skip-add-drop-table
  • --skip-add-locks
  • --skip-comments
  • --skip-compact
  • --skip-disable-keys
  • --skip-extended-insert
  • --skip-opt
  • --skip-quick
  • --skip-quote-names
  • --skip-triggers
  • --skip-tz-utc
  • --verbose
  • --where
  • --xml

一方、mysqlpumpには、mysqldumpでは使用できない次のオプションがあります

  • --compress-output
  • --default-parallelism
  • --defer-table-indexes
  • --exclude-databases=
  • --exclude-events=
  • --exclude-routines=
  • --exclude-triggers=
  • --exclude-users=
  • --include-events=
  • --include-routines=
  • --include-triggers=
  • --include-users=
  • --parallel-schemas=
  • --skip-definer
  • --users
  • --watch-progress

名前の変更または類似:

  • --no-dataダンプ == --skip-dump-rowsポンプ
  • --no-set-namesダンプに存在しないポンプが、その同義語は- --skip-set-charset-の両方に存在します
  • --ignore-table=ダンプほとんどである--exclude-tables=ポンプを除いて--exclude-tables、カンマで区切られたすべてのテーブルを指定することができ、およびワイルドカード文字を可能にし(%_
  • --tablesダンプほとんどである--include-tables=ポンプを除いて--include-tables、カンマで区切られたすべてのテーブルを指定することができ、およびワイルドカード文字(することが可能%_)。また、dumpでは--tablesオーバーライド--databasesしますが、pumpではオーバーライドしません。--include-tables=
  • --databasesダンプポンプの両方は、カンマで区切られたすべてのデータベースを指定でき、ワイルドカード文字(および)を許可することを除き--include-databases=、ほとんどがポンプ--include-databasesにあります。%_

3

両方のバックアップツール間で理解したことの概要を以下に示します。

マニュアルページに記載されているmysqldumpの定義

mysqldumpクライアントユーティリティは論理バックアップを実行し、元のデータベースオブジェクト定義とテーブルデータを再現するために実行できる一連のSQLステートメントを生成します。バックアップまたは別のSQLサーバーへの転送のために1つ以上のMySQLデータベースをダンプします。mysqldumpコマンドは、CSV、その他の区切りテキスト、またはXML形式で出力を生成することもできます。

Mysqldumpは非常に使いやすく、構文も非常に簡単です。これを実行すると、すべての行がSQLクエリに変換され、標準出力に出力されます。この出力をoutfile(>)にリダイレクトするか、オプションのresult-fileを使用してリダイレクトできます。

デフォルトでは、mysqldumpはinformation_schemaテーブルをダンプせず、performance_schemaを使用しません。mysqldumpの主な欠点は、バックアップと復元中に1つのスレッドしか使用しないことです。

mysqlpumpはMySQL 5.7で導入されたもう1つのユーティリティで、mysqldumpと比べていくつかの機能が追加されています。

マニュアルページに記載されているmysqlpumpの定義

mysqlpumpクライアントユーティリティは論理バックアップを実行し、元のデータベースオブジェクト定義とテーブルデータを再現するために実行できるSQLステートメントのセットを生成します。バックアップまたは別のSQLサーバーへの転送のために1つ以上のMySQLデータベースをダンプします。

主な機能は

  • バックアップを高速化する並列処理(マルチスレッド)

  • 進捗インジケータ

  • ユーザーアカウントのダンプ(MySQLシステムデータベースの挿入としてではなく、作成、許可ステートメント)

デフォルトでは、mysqlpumpは、明示的に言及されていない限り、情報スキーマ、パフォーマンススキーマ、一部のMySQLシステムテーブルなどのシステムデータベースのバックアップを取りません。

また、オプション-include-database、-exclude-database、-include-table、-exclude-table with pattern matching(%)もあります。

これらのオプションは、データセット全体から少数のオブジェクトのみをバックアップしたいユーザーにとってより便利です。

一般的に、mysqlpumpはその作業をチャンクに分割し、それぞれがマルチスレッドキューに割り当てられます。

  • このマルチスレッドキューはNスレッドによって処理されます(デフォルトでは2スレッドを使用します)。

  • このオプション-default-parallelismおよび-parallel-schemasを使用して、多数のスレッドを定義できます。

  • 復元中、mysqldumpと同じ単一のスレッドを使用しますが、並列復元がありません。

アドオンとして、バックアップと復元(mysqlpumpとmysqldumpがない)の両方で並列化を実行するもう1つのツールがあります。これはmydumperとmyloaderです。これは、巨大なデータセットを復元する際に非常に使用されます。

このブログmysqldump vs mysqlpump vs mydumperでこれらのツールの詳細とその便利なオプションを見つけることができます 。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.