回答:
MySQLサーバーのバックアップを取るためのベストプラクティス:
MySQLでレプリケーションをセットアップします。マスターサーバーとスレーブサーバーをセットアップする必要があります。DBへのすべての読み取り/書き込みは、スレーブサーバーに送られます。レプリケーションを使用する利点は、マスターサーバーを中断することなくスレーブサーバーからバックアップを取得できることです。アプリケーションは、ダウンタイムなしでマスターで動作し続けます。
データセットが小さい場合( "small"は相対的な用語であることがわかります。..修飾するために、たとえば<10GB)、mysqldumpはおそらくうまく機能します。簡単で、オンラインで、非常に柔軟です。mysqldumpでできることはいくつかあります。すべてをバックアップするか、特定のデータベースまたはテーブルのみをバックアップし、DDLのみをバックアップすることで、リストアを高速化するためにダンプを最適化します。
ただし、最も重要なオプションは、バックアップの一貫性に関連しています。私のお気に入りのオプションは次のとおりです。--single-transaction:このオプションは、テーブルがInnoDBストレージエンジンを使用している場合(のみ)、一貫性のあるバックアップを提供します。読み取り専用ではないMyISAMテーブルがある場合は、バックアップ時にこのオプションを使用しないでください。--master-data = 2:このオプションは、ダンプの一貫性を保証します(オプション--single-transactionを追加していない限り、lock-all-tablesを実行します)。--master-dataオプションは、結果のダンプファイルにバイナリログの位置も記録します(= 2を指定すると、この行がダンプファイルのコメントになります)
mysqldumpに関する最後の注意:復元時間はバックアップ時間よりも大幅に長くなる可能性があることに注意してください。インデックスの数など、いくつかの要因に依存します。
より大きなデータセットを持っている人にとっては、物理的なバックアップが道です。コールドバックアップ(MySQLサービスのシャットダウン、データディレクトリのコピー、サービスの再起動)を行うことはできますが、多くの人はダウンタイムを望んでいません。私のお気に入りのソリューションはスナップショットです。これは、ホット(InnoDBの場合)である場合もあれば、短いロックが必要な場合(MyISAMの場合)の場合もあります。すべてのデータを含めることを忘れないでください(ib_logfilesを含めます)。Lenzはこれを支援する素晴らしいユーティリティを提供しています:http : //www.lenzg.net/mylvmbackup/
MySQL Enterprise Backupを使用する利点:
参照:http : //www.mysql.com/products/enterprise/backup/features.html http://www.mysql.com/products/enterprise/backup.html
バックアップに使用する専用レプリカをセットアップすることをお勧めします。これにより、プライマリに影響を与えることなくバックアップタスクを実行できます。これによりアーキテクチャが複雑になるため、レプリケーションラグを監視して、すべてが機能していることを確認する必要があります。
実際のプロセスに関しては、サードパーティのツールなしでいくつかのオプションがあります。mysqldump
次のコマンドを使用してスナップショットを作成できます(InnoDBを使用している場合)mysqldump --all-databases --single-transaction > all_databases.sql
。データサイズによっては、MySQLをシャットダウンしてデータファイルを直接バックアップすることをお勧めします。レプリカを再起動すると、ダウンした期間にプライマリが受信したすべてのイベントが再生されます。MySQL Enterpriseを使用している場合、mysqlbackup
ユーティリティがこれを行います。
レプリカでバイナリログを有効にすることで、増分バックアップを取得できます。当然、これはデータを変更するイベントのみを記録するため、これを上記のスナップショットと組み合わせる必要があります。
--single-transaction
を追加すること--events --routines
を忘れないでください--triggers
。my.cnfで無効にできるため、デフォルトで有効になっていますが、私も常に使用しています。データベースにこれらのタイプのオブジェクトがあるかどうかに関係なく、これらを標準的な方法として使用することは、ほとんど常に良いことだと思います。