web-dev-qa-db-ja.com

Percona xtrabackupは、500 GBのMySQLバックアップに適していますか?

主にInnodbテーブルで構成される500 GBのMySQL dbと、1つの大きな(200 GB)MyISAMテーブルがあります。現在のバックアップ戦略は、dbファイルを外部ハードドライブにコピーすることです。これにより、約4時間のダウンタイムが発生します。私のニーズ:

  1. 低価格。
  2. 回復時間が長くなることがあります。リアルタイムのレプリケーションは必要ありません。
  3. 1週間から2週間の範囲でデータの損失を処理できます。
  4. バックアップには可能な限り短いダウンタイムをお勧めしますが、最大2時間まで対応できます。

現在、Percona xtrabackupへの移行を検討しています。それは私のユースケースに適切なソリューションですか? MyISAMテーブルと学習曲線をロックすることを特に心配しています。

7
Noam

このサウンドから、別のDBインフラストラクチャを使用できます。

あなたの前述のニーズに基づいて、私は提案がありますが、少し妥協する必要があります。

提案#1:同じサーバーで異なるディスクでMySQLレプリケーションを使用します

2番目のニーズ(No need of real-time replication)この提案では、わずかな後席をとる必要があります。 XtraBackupに十分な大きさの外部ハードドライブがあるので、同じボックスでMySQLの2番目のインスタンスのdatadirとして使用してみませんか?

私は専用のmysqlインスタンスをポート3307〜3399にプロビジョニングするように独自のサービスをスクリプト化しました。これに関するこれまでの投稿は次のとおりです。

SUGGESTION#2:別のサーバーでMySQLレプリケーションを使用する

最初のニーズを考慮して(Low Cost)、十分なディスクスペースがあるコモディティサーバーにアクセスできる場合は、その外部サーバーにMySQLレプリケーションをセットアップします。このようにして、スレーブで次のようにバックアップを実行できます

  • STOP SLAVE;
  • XtraBackup
  • START SLAVE;

これは、マスターに影響を与えずに(サーバー負荷なし、ディスクI/Oなし)実行できます。

提案#3:並列mysqldump

データベースまたはテーブルの並列mysqldumpを設定できます。これにより、バックアップの期間が短くなる可能性があります。 XtraBackupは本質的に、特定の時点での操作を伴うチェックポイント付きトランザクションバックアップを実行するので、バックアップの特定の時点はバックアップが終了した時点になります。スレーブで並列mysqldumpを使用すると、複製されていないため、特定の時点がバックアップの開始であるバックアップが提供されます。停止したスレーブでmysqldumpを実行すると、ストレージエンジンに依存しなくなります。言い換えれば、テーブルがInnoDBであるかMyISAMであるかは問題ではありません。

これをSUGGESTION#1に適用すると、マスターとスレーブの両方が同じマシン上に存在するため、サーバーの負荷とディスクI/Oが発生します。

これを提案#2に適用した場合、マスターにペナルティはありません。スレーブで自由にバックアップを実行できます。また、MyISAMテーブルのロックについて心配する必要もありません。

並列mysqldumpの実行に関する私の過去の投稿を参照してください

8
RolandoMySQLDBA