1

1つのmysqlサーバーに2つのデータベースがdatabase_masterありますdatabase_backup。に挿入または更新されたすべての新しいデータをコピーし
たいと思います。 ただし、に削除されたデータがある場合でも、上のデータは残ります。database_backupdatabase_master
database_masterdatabase_backup

MySQLでそれをどのように行うことができますか?

4

2 に答える 2

1

明確にするために、私はあなたが複製を望んでいると思いますが、レコードの削除を複製することはしません。これは、ネイティブレプリケーション(行ベースでもステートメントベースでもない)では実行できません。主な理由は、メインデータベースで行を削除してから行を挿入した場合、新しい行が古い行の主キーを取得する可能性があるためです。レプリカデータベースでは、これによりキーの競合が発生します。

ただし、ある種のハック監査ログを実行するには、スレーブmysqlサーバー上に実際のDBテーブルごとに1つのログテーブルを作成できます。たとえば、テーブルがあるfoo場合は、対応するテーブルを作成しfoo_loggingます。ロギングテーブルには、元のすべての列に加えて、個別の自動インクリメント主キーが含まれます。次に、元のテーブルにトリガーを設定して、新しいレコードまたは更新されたレコードのコピーを対応するログテーブルに挿入します。

于 2012-08-30T19:02:15.513 に答える
1

挿入ステートメントと更新ステートメントには、database_masterテーブルのTRIGGERを使用できます。トリガーでは、database_backupテーブルにデータを挿入できます。

ただし、これは非同期ではないことに注意してください。両方のテーブルへの挿入(または更新)は、一緒に1つのトランザクションになります。何か問題が発生した場合、両方がロールバックされます(これは場合によっては良いことです)。

database_masterを削除しても、database_backupには影響しません。

于 2013-07-23T17:28:19.123 に答える