我一直在尋找一種方法來防止從屬服務器處理MySQL刪除語句,我正在處理數據倉庫項目,並且我希望在數據複製後從生產服務器中刪除數據對奴隸。沒有刪除數據的MySQL複製
完成這件事的最好方法是什麼?
謝謝
我一直在尋找一種方法來防止從屬服務器處理MySQL刪除語句,我正在處理數據倉庫項目,並且我希望在數據複製後從生產服務器中刪除數據對奴隸。沒有刪除數據的MySQL複製
完成這件事的最好方法是什麼?
謝謝
有幾種方法可以做到這一點。
SET SQL_LOG_BIN=0;
爲執行您的刪除之前在主站上的相關會話。這樣它不寫入二進制日誌BEFORE DELETE
觸發器忽略刪除。我傾向於使用方法#1來處理我不想複製的語句。它需要SUPER
權限。
我還沒有嘗試#2,但它應該是可能的。
你只能用一個黑客來實現這一點,它可能會導致問題。 MySQL複製不是爲此設計的。
想象一下,您在您的主設備中插入一條記錄,它將複製到從設備。然後,您從主站刪除,但不會從從站刪除。如果某人使用相同的唯一密鑰添加了記錄,則從屬設備上會出現衝突。
一些替代方案:
也許如果你提供你希望這個鏡像數據庫沒有刪除的原因,我可以給你一個更有針對性的解決方案。
我有一些忙碌的數據庫,每天有1.6百萬條記錄,我試圖讓所有記錄存儲在單個數據庫中,然後在生產上運行清理工作來維護小型/快速數據庫,並且從站/報告服務器設置歷史數據。 我需要刪除在master上運行,以維護小型數據庫。 – Deano 2013-03-13 15:23:03
@Deano,我很想知道哪種方法實際上適用於您。提前致謝! – 2015-03-04 10:14:04
@ el.atomo,我創建了一個Perl腳本,它將每10分鐘運行一次,然後掃描master db以獲取最近的記錄,然後連接到倉庫db,並寫入新記錄,Perl mysql模塊,支持事務,因此它將扮演角色如果遇到錯誤並返回事務。也許這不是最好的方法,但現在一段時間以來它一直沒有問題。 – Deano 2015-03-04 23:06:28
你可以排除刪除查詢請參考stac http://dba.stackexchange.com/questions/20020/how-would-i-run-delete-queries-on-a-master-without-executing-same-deletes -on-a – shola 2013-03-13 15:14:13