MySQLでマルチギガバイトのデータベースをバックアップするにはどうすればよいですか?より迅速な復元のためのボーナスポイント


11

MySQLに4GBのデータベースがあります。どうすればバックアップできますか?さらに、回復が必要な場合に、復元プロセスを高速化する方法はありますか?

私は現在、毎晩cronジョブを使用してmysqldumpすべてをダンプし、3日間のバックアップを保持しています。

回答:


14

MySQLには約90 GBがあるため、いくつかの提案を以下に示します。

  • 次の呼び出しを試すことができますmysqldump -u USER -pPASS --single-transaction -Q --databases foo bar(ドキュメントを使用して、これらのスイッチが機能するかどうかを確認してください)。
  • MYISAMテーブルのみを使用する場合は、データベースを別のドライブにコピーしてtarで圧縮することもできます。ただし、追加ファイルを保持するため、これはINNODBでは機能しません。また、これを慎重にテストする必要があります。
  • バイナリログを有効にして、バックアップします。(これはおそらく私のお気に入りです!)
  • レプリケーションをセットアップし、スレーブの1つでバックアップを実行してから、残りのスレーブに追いつきます。それが実行されるときそれはかなりいいですが、問題はそれを実行させることです。MySQLの複製は楽しいものではありません。:(
  • ファイルシステムはスナップショットをサポートしていますか?もしそうなら、それはそれらを使う絶好の機会です。
  • Amandaなどの商用ソリューションを使用します。

10

最善の方法は、通常の操作を中断しないことです。信頼性の高い、フォールトトレラントシステムの場合、同期を維持する2つのDBがあり、セカンダリをバックアップします。(たとえば、このhowtoforgeの記事

それ以外の場合は、マニュアルを読んでください:現在のようにmyseldumpを使用するか、mysqlhotcopyスクリプトを使用する(mysqldumpとまったく同じように使用する)か、DBを停止してfrm、MID、MYIファイルをコピーします(rsyncを使用)。

私は、stop + copyファイルメカニズムがあなたが手に入れる最速だと思います。


3

一部のデータベースが読み取り専用であるか変更されている場合は、まれにそれを頻度の低いcronとして選択します。


2

あなたの質問に答えるには、extended_insertオプションが有効です。復元に十分なリソースがある場合、extended_insertは1つのクエリに大量のデータを挿入し、復元を高速化します。


1

あなたは本当にPerconaのXtrabackupを考慮すべきです

ラッパースクリプト「innobackupex」はMyISAMを処理できますが、非ロック/オンラインバックアップの場合、テーブルはすべてInnoDBである必要があります。

乾杯

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.