2017-02-13 46 views
0

我有一個情況,表中有大量的DELETE陳述。如何防止事務在MySQL中複製?

如果我要截斷表的奴隸,忽略所有從一個表中的DELETE語句,可能是什麼容易的查詢?

+0

如果您指的是表格的內容,那麼您可以使用'DISTINCT'來獲取單個非複製值。這是你要求的嗎? –

+0

謝謝黑豹。我的意思是,我如何確保立即趕上覆制,這是因爲99%的bin日誌包含來自tableA的DELETE?是否可以指示MySQL上的奴隸簡單地忽略任何DELETE語句來表tableA? – DBPlayer

+0

您可以使用['sql_slave_skip_counter'(https://dev.mysql.com/doc/refman/5.7/en/set-global-sql-slave-skip-counter.html),但你必須檢查爲你自己哪些是刪除語句。你也應該真的檢查一下,如果這是你想要的,因爲這會讓你的服務器不同步,這可能會在以後造成嚴重的後果,因爲涉及這個表的任何語句都可能在主服務器和從服務器上產生不同的結果。也許你應該重置你的複製(並加載你的主數據中新鮮的所有數據)。 – Solarflare

回答

0

您可以忽略一些表而不是語句。 如果確保所有刪除語句都是一個操作表。您可以在複製過程中忽略此表,然後自己操作此表。

+0

感謝wang,但是如何告訴MySQL忽略要在Slave複製的表,命令是什麼? – 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