1

現在、私のデータベースはほぼ 20 GB の大きさで、まだ拡大中です。mysqldump を使用して毎日バックアップを取っていますが、非常に遅くなっています。非常に遅いため、その間に新しい接続が積み重なり、最終的にこのエラーが発生します。

SQLSTATE[HY000] [1040] Too many connections

(受け入れられる接続の量を改善することはできますが、バックアップが完了するのを待って接続がまだ凍結されているため、タイムアウトにつながるため、何もしません)

速度を改善するためのいくつかのオプションを調べてきましたが、これが私が見つけたものです:

  1. オプション --quick (おそらく役立つでしょう)
  2. オプション --single-transaction (テーブルがロックされるのを防ぎますが、データベースが正しくなくなる可能性があります)
  3. マスター/スレーブ レプリケーション (おそらく、私ができる最善のことです。問題が 1 つあります。使用可能なサーバーは 1 つしかありません)

マスター/スレーブ レプリケーションは、スレーブの更新を停止し、バックアップを取り、同期を再開できるため、最良のオプションのように思えます。問題は、使用する物理マシンが 1 台しかないことです。

この 1 つのサーバーに複数の mysql インスタンスをセットアップできることはわかっています。問題は、そうするのが賢明かどうかです。スレーブは実際には、バックアップ ファイル (ネットワーク上の別のディスクにコピーされる) を生成するためにのみ使用されるため、マスターは稼働状態を維持できます。

4

1 に答える 1

0

innodb のみを使用する場合は、xtrabackupを試してください。

myisam と innodb の両方を使用する場合、フラッシュ + lvm スナップショット + ファイルレベルのコピーが機能する可能性があります。

実際、バックアップ用のレプリケーション スレーブも良い考えです。マスターとスレーブ間のデータの一貫性を定期的にチェックすることを忘れないでください。

于 2012-08-29T19:37:56.420 に答える