1

現在、mysqldump を使用して、サイズが急速に拡大しているデータベースをバックアップしています。私は夜遅くに実行していますが、交通量が多い瞬間に実行すると問題が発生することがあります (これは夜間に発生することもあります)。たとえば、昨夜、私のサイトの 1 つがデータベース バックアップの直後にロックされ、プロセス リストが完全に (そしてクリアされていない) 状態になりました。

これにアプローチするためのより良い方法についての提案はありますか? 目標は可用性を最大化することであるため、バックアップ中にサイトを一時的なメンテナンス状態にすることはできません (一部の SQL ダンプには時間がかかります)。頭に浮かぶ 1 つのアイデアは、マスター コピーとスレーブ コピーの両方を実行し、シャットダウンしてスレーブ コピーをバックアップし、処理中はマスター コピーをそのままにしておくというものです。ただし、もっと簡単な解決策があることを願っています。どうしても必要な場合を除き、バックアップ目的でのみスレーブ コピーを実行したくありません。助言がありますか?

ありがとう。

4

2 に答える 2

2

2つの考え:

  1. スレーブを実行します。少なくとも、障害が発生した場合に本番トラフィック用のウォーム スペアが提供されます。また、そこからレポートやツールを実行して、運用サーバーからサイクルを解放することもできます。
  2. innodb に移動し、mysqldump --single-transaction を使用します(man ページを参照)

幸運を!

于 2011-03-31T21:51:24.257 に答える
0

私はPerconaXtrabackupを使用しています。これは、より多くの機能を備えたInnoDB Hot Backupに似ており、無料で配布されています。Xtrabackupは、innodbテーブルをロックせずにスナップショットを取得し、現在のマスターログファイル情報を記録します。要求された場合は、スレーブからバックアップを取得している場合はスレーブ情報を記録します。

スレーブを実行し、このようなバックアップまたはmysqldumpを使用してバックアップを実行することをお勧めします。スレーブはホットバックアップを提供します。これは、ハードウェアの問題、またはサーバーを取り出すさまざまなソフトウェアやユーザーエラーの問題が原因でマスターが爆発した場合に、すぐに切り替えて数分以内に稼働させることができます。xtrabackupまたはmysqldumpを使用したバックアップは、複製されたサーバーがそこに保存しないため、誤ってテーブルを削除したり、必要のない行を削除したりした場合にデータを復元するために使用できるバックアップを提供します。

于 2011-03-31T22:11:52.873 に答える