web-dev-qa-db-ja.com

非常にアクティブな500G + MariaDB Galera Clusterでバックアップを実行する方法は?

非常にアクティブな500G + MariaDB Galeraクラスターでバックアップを実行するには、どの方法が推奨されますか?

  1. スロットルでmariabackup/innobackupex(Percona Xtrabackupのフォーク)を使用する。ロックが長く続く場合、クラスター全体に問題を引き起こす可能性があるFLUSH TABLES WITH READ LOCKについて考える必要があります。 Percona XtraDB Clusterを使用する場合、バックアップ用のロックテーブルがあるため、これは大きな問題ではありません。

  2. ノードを非同期状態にして、バックアップを実行し、バックアップの完了後に非同期モードをオフにします。ここで潜在的な問題は、バックアップに時間がかかりすぎる場合であり、ノードが追いつくまでにしばらく時間がかかります。

  3. スレーブを作成し、スレーブでバックアップを実行します。スレーブがマスターと同期していることを監視する必要があります。たまに一貫性チェックを実行しますか?

  4. Mysqldumpを使用します。 mysqldumpを使用して500G +データベースのバックアップを取るのに時間がかかりすぎると思います。

あなたの意見を聞いて興味があります。

よろしく、マルコ

2
Marko Sutic

プランA:クラスターのノードのみを使用:

  1. クラスタからノードを取り出します:SET GLOBAL wsrep_desync = ON; SET GLOBAL wsrep_on = OFF;wsrep_desync および wsrep_on を参照してください。)
  2. xtrabackup(またはその他)でバックアップします。
  3. それをクラスターに追加し直します:SET GLOBAL wsrep_on = ON; SET GLOBAL wsrep_desync = OFF;
  4. 最終的にISTはそのノードを他のノードと同期させます。

短所:しばらくの間ノードを失います-ステップ2と4は時間がかかります。
SSTではなくISTを可能にするのに十分な大きさのgcacheが必要です。

プランB:ノードの1つにスレーブを永続的に追加します。バックアップを取る場合は、そのスレーブをレプリケーションから除外します。その後、レプリケーションに戻します。

欠点:別のサーバーが必要です。
長所:プランAの短所ではありません。

2
Rick James