詳細が重要かどうかはわかりませんが、XtraDB(MariaDB)上のGaleraクラスターについて話をしているだけです。
マスターとマスターのセットアップがあり、必要に応じてデータベースのバックアップと復元に興味があります。 MySQLの単一インスタンスで、ミルの実行を行います
mysqldump -u USER -p DB_NAME > DB-DATE.sql
-and to restore-
mysql -u USER -p < /path/to/dump.sql
これらのコマンドがクラスター環境でどのように機能するかはわかりません。これを2つの部分に分け、それぞれにコメントを付けます。
バックアップ
バックアップに関する限り、私が考えることができる唯一の問題は、バックアッププロセス中に一部のデータがクラスターに書き込まれる可能性があり、クエリが発生し、バックアップが実行され、次に別の関連クエリが発生してデータが不整合な状態のままになることです。 2つのテーブルusers
とcounts
があるとします。ユーザーがフォームを送信すると、PHPスクリプトはusers
のユーザーのお気に入りの色を更新し、counts
のtimes_color_changed
というフィールドをインクリメントします。この単純なスクリプトは次のようになります。
<?
//Yes, these are vulnerable to SQL injection but this is to demonstrate a point.
$query1 = "UPDATE `users` SET `favorite_color` = ".$_POST['color']." WHERE id = $user_id";
$query2 = "UPDATE `counts` SET `times_color_changed` = `times_color_changed` + 1 WHERE id = $user_id";
mysql_query($query1);
mysql_query($query2);
?>
私の心配は、mysqldump
を並行して実行しているときに、クエリが次のように実行されることです。
QUERY_1 runs
MySQL_DUMP
Query_2 runs
-or-
Query1 from remote server commits on local server
MySQL_DUMP
Query2 from remote server commits on local server
これらのいずれかが不定状態につながる可能性があります。 SQLサーバーはいつでも停止できますが、MySQLダンプを実行できません。
xtrabackup
コマンドはありますが、よくわかりません。私は常にmysqldump
を通じてダンプを行ってきました
復元中
ダンプを復元するときに、これがリモートサーバーに複製されることをどのように確認できますか?クラスターは私のダンプが「古い」データであり、それを複製しないと考えますか?
PerconaのXtraBackup を使用することを強くお勧めします。あなたはすでにストレージエンジンを使用しています-時間をかけてこのツールを理解してください! mysqldumpを使用しない正当な理由は here です。データのテキストファイルSQLダンプを実際に取得する必要がある場合は、 mydumper を確認してください。理由は here および here を参照してください(免責事項-ありません) t使用済み)。