実際にはできませんが、ハックすることはできます。通常のスレーブを設定することから始めます。同期されると、それらは単一のマスターと同じスキーマを持ちます。ここでの秘訣は、スレーブに伝播するがマスターにデータを残さないマスターでクエリを作成することです。最初に、すべてのテーブルに自動インクリメント キーがあることを確認して、通常とまったく同じようにクエリを作成します。
INSERT INTO tbl (col1, col2, col3) VALUES (val1, val2, val3);
SELECT LAST_INSERT_ID();
クエリを作成したら、時間を記録し、最後の挿入 ID をアプリケーション レベルのキューに保存します。スレーブで断続的にクエリを実行します (負荷に応じて、たとえば 10 秒ごと)。
SHOW SLAVE STATUS;
現在のシステム時刻から Seconds_Behind_Master 値を減算します (この時刻を t1 と呼びます)。ここで、古いクエリのキューを反復処理し、最初の要素の時間が t1 よりも大きい限り、最初の要素を削除します。キュー内の要素を削除するたびに、そのレコードをマスターから削除したいが、それをスレーブに残しておきたい (前述のクエリを作成してから更新されているため、既にわかっている場合)。したがって、スレーブを消去せずに、マスター データベース (特定の時間に約 10 秒分のデータが含まれます) を消去します。
SET sql_log_bin=0;
DELETE FROM tbl WHERE autoincrement_key=last_insert_id;
SET sql_log_bin=1;
last_insert_id は、消去するクエリの格納された LAST_INSERT_ID() です。