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

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

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

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

ベストアンサー1

私は、数万のテーブルを持つ非常に大規模なデータベースを所有しており、その一部には、数千万のエントリで最大 5 GB のデータが含まれています。(私は人気のあるサービスを運営しています)... これらのデータベースをバックアップするときはいつも頭を悩ませてきました。デフォルトの mysqldump を使用すると、サーバーの負荷がすぐに制御不能になり、すべてがロックされ、ユーザーに影響を及ぼします。プロセスを停止しようとすると、テーブルがクラッシュし、それらのテーブルの回復中に長時間のダウンタイムが発生する可能性があります。

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

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

mysqldump リファレンスdev.mysql.com でも次のように書かれています...

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

データベースが InnoDB であることに依存しているという点については何も述べられていませんが、私の場合は myISAM ですが、これは見事に機能しました。サーバーの負荷はほとんど影響を受けず、私のサービスはプロセス全体を通してロレックスのように動作しました。大規模なデータベースがあり、そのバックアップがエンド ユーザーに影響を及ぼしている場合、これが解決策です。 ;)

おすすめ記事