2017-02-13 6 views
0

テーブルにDELETE文がたくさんある状況があります。MySQLでトランザクションが複製されないようにする方法は?

SLAVEでテーブルを切り捨てて、あるテーブルのすべてのDELETEステートメントを無視する場合は、aptクエリは何ですか?

+0

テーブルの内容を意味する場合は、DISTINCTを使用して複製されていない単一の値を取得できます。あなたが求めているのはこれですか? –

+0

Pantherに感謝します。つまり、ビンログの99%にtableAのDELETEが含まれているため、すぐにレプリケーションをキャッチする方法を教えてください。スレーブのMySQLに、tableAのDELETE文を無視するよう指示することは可能ですか? – DBPlayer

+0

['sql_slave_skip_counter'](https://dev.mysql.com/doc/refman/5.7/en/set-global-sql-slave-skip-counter.html)を使用できますが、チェックする必要がありますこれらのうちどれが削除ステートメントであるかあなた自身のために。また、このテーブルに関係するすべてのステートメントがマスタとスレーブで異なる結果を生成する可能性があるため、サーバが同期しなくなり、後で重大な結果を招く可能性があるため、これが本当に必要かどうかを実際に確認する必要があります。レプリケーションをリセットするだけで、マスターからすべてのデータを新しくロードする必要があります。 – Solarflare

答えて

0

文の代わりにいくつかのテーブルを無視することができます。 すべての削除ステートメントが操作の1つのテーブルであることを確認した場合は、複製中にこのテーブルを無視してから、このテーブルを自分で操作してください。

+0

おかげですが、スレーブでレプリケートするテーブルを無視するようにMySQLに指示する方法は何ですか? – DBPlayer

+0

複製を開始する前に--replicate-ignore-tableまたは--replicate-wild-ignore-tableオプションを使用してください。あなたはリンクを見ることができますhttps://dev.mysql.com/doc/refman/5.7/en/replication-rules-table-options.html –

+0

ありがとう王、私はそのオプションを見て、それはトリックを行うかもしれないように見える、しかし、このオプションが設定された後にプライマリに入ってくるトランザクションに対してこのオプションが有効になるかどうかはわかりません。あるいは、すでにバイナリログに記録されていてまだレプリケートされていないテーブルのDELETEステートメントを無視するでしょうか? – DBPlayer

関連する問題