2014-12-03 70 views
0

我正在解決MySQL主從複製問題。這裏是這樣的情況:MySQL/MariaDB複製解決方案

我有一個服務器A和一個服務器B.服務器A運行的應用程序產生的數據表TA1,TA2和TA3。我想將TA1,TA2和TA3的特定子集(由inner join select定義)複製到專用於報告引擎的服務器B上的一個表TB1中。在服務器A上創建數據後,必須儘快將數據複製到服務器B上。現在,我可以通過將表TAx從服務器A複製到位於服務器B上的TBx,然後通過在服務器B上創建一個視圖來過濾不必要的行。

哦,我討厭這個解決方案。我想在服務器A上執行行篩選並僅複製子集。任何想法如何很好地設置它?

我想避免調度程序,它會每分鐘左右運行查詢以在複製之前在服務器A上創建表,我希望避免使用觸發器來過濾數據,我希望保持數據在線複製儘可能...

回答

0

當使用基於STATEMENT的複製時,您可以簡單地在從屬端的表上使用觸發器來過濾掉不需要的行(雖然行更改仍會寫入到binlog複製文件中,從屬方)

從MariaDB 10.1開始(不是GA版本),您也可以使用基於ROW的複製,並且仍然有從屬端觸發器進行過濾:

https://mariadb.com/kb/en/mariadb/documentation/replication/standard-replication/running-triggers-on-the-slave-for-row-based-events/

或者你可以有稅收和TBX表上的主已,有關稅收觸發器做過濾,只複製需要進行修改的TBX影子表,然後讓複製過濾器,只複製TBx表到奴隸(s)。