web-dev-qa-db-ja.com

大規模なデータベースのMySQLダンプを実行する最も速い方法は何ですか?

私は現在、かなり大きなデータベースを持っており、私たちのWebサイトのLive ServerからTest Serverへ(またはその逆)のダンプを作成しています。

ダンプの作成はかなり高速です(約30秒かかります)。ただし、ダンプされたデータベースのコピーをセットアップするためにテストサーバー(またはLiveサーバー)でダンプファイルを実行するには、AGES(約2〜4時間)かかります。

とにかくこれを速くする方法はありますか?現在、Navicatを使用してMySQLデータベースダンプを生成し、Navicatを使用してそれらを再度実行しています。

2
Ricky

LVMスナップショットでOSをセットアップします。できれば、スナップショットを作成する別のパーティションまたはドライブにMySQLを置いてください。次に、ダンプを取るには:

  • Mysqldを停止します
  • スナップショットを撮ります(データセットのサイズに関係なく、1分程度)
  • mysqldを起動する

スナップショットを他のマシンにコピー(推奨rsync)(これには時間がかかります)を同一スナップショット領域に行います。

  • mysqldを起動する

(注意:私はこれを試したことがないので、ざらざらしている可能性があります。)

1
Rick James

別の回答としてコメントに追加:

  1. ペルソナXTrabackup- https://www.percona.com/software/mysql-database/percona-xtrabackup
  2. 停止-コピー-開始
  3. (推奨)ROWベースのレプリケーションでスレーブサーバーを接続し、いつでもスレーブを停止-ファイルをコピー-スレーブを開始

スレーブ、行ベースのレプリケーションの場合-強く推奨されます。混合またはステートメントベースのレプリケーションの場合、スレーブで一時テーブルを開いていないことを確認する必要があります。そうしないと、ROWベースのレプリケーションでレプリケーションが中断されます。一時テーブルはレプリケーションプロセスに関与しません。

もちろん-すべてのマシンで同じバージョンのMySQL

1
a_vlad