web-dev-qa-db-ja.com

サーバーの現在の負荷に影響を与えないように、MySQLダンプを遅くするにはどうすればよいですか?

MySQLダンプの実行は非常に簡単ですが、ライブの専用MySQLサーバーがあり、レプリケーションをセットアップする必要があります。これを行うには、レプリケーションスレーブにインポートするデータベースのダンプが必要です。

問題は、ダンプを実行すると発生します。MySQLはそれを最大限に活用し、それに接続するサイトにリソースを結び付けます。ダンプクエリを優先度の低い状態に制限してライブ接続を優先する方法があるかどうか疑問に思っていますか?外部サイトからの負荷は、完全なダンプを実行するMySQLの努力の影響を受けないという考えです...

55
z33k3r

数万のテーブルを持つ非常に大きなデータベースがあり、その中には数千万のエントリに最大5GBのデータがあります。 (私は人気のあるサービスを実行しています)...これらのデータベースをバックアップするとき、私はいつも頭痛がしました。デフォルトのmysqldumpを使用すると、サーバー負荷が急速に制御不能になり、すべてがロックされて、ユーザーに影響を及ぼします。プロセスを停止しようとすると、テーブルがクラッシュし、それらのテーブルのリカバリ中に多くのダウンタイムが発生する可能性があります。

私は今使用しています...

mysqldump -u USER -p --single-transaction --quick --lock-tables=false DATABASE | gzip > OUTPUT.gz

Dev-mysql.comの mysqldumpリファレンス には...

大きなテーブルをダンプするには、-single-transactionオプションと--quickを組み合わせる必要があります。

InnoDBであるデータベースに依存していることについては何も言わず、私のものはmyISAMであり、これは私にとってはうまくいきました。サーバーの負荷はほぼ完全に影響を受けず、プロセス全体で私のサービスはロレックスのように動作しました。大規模なデータベースがあり、それらのバックアップがエンドユーザーに影響している場合... this IS the solution。;)

134
CA3LE

InnoDBテーブルを使用する場合、mysqldumpに--single-transactionおよび--quickオプションを使用します

39
Drew Clayton