mysql 復制過濾重復如何解決
更新時間:2012年11月26日 09:52:27 作者:
在進行mysql復制過程中,會出現(xiàn)數(shù)據(jù)重復的現(xiàn)象,怎樣利用mysql 過濾重復的數(shù)據(jù)呢?本文將提供詳細的解決方法,需要了解的朋友可以參考下
1、replicate_do_db 和 replicate_ignore_db 不要同時出現(xiàn)。容易出現(xiàn)混淆。也是毫無意義的。
Replicate_Do_DB: db1
Replicate_Ignore_DB: db2
statement模式:
使用use 語句
use db1;insert into tb1 values (1);
use db2;insert into tb2 values (2);
以上在slave上均能正確復制,tb1 有數(shù)據(jù),tb2沒有數(shù)據(jù)。
不使用use 語句
insert into db1.tb1 values (11);
insert into db2.tb2 values (11);
結果tb1沒有數(shù)據(jù),tb2也沒有數(shù)據(jù)(按照文檔上來講,應該有的)
row模式:
無論是否使用use 語句,均能正確復制
小結:對于statement模式,SQL語句必須使用use 語句,并設置設置多個replicate_do_db來復制多個DB。
2、只進行表級別過濾的時候,對于statement模式,無論是否使用use語句,均能正確復制。row模式也是可以的。(表名它匹配的表的全名:數(shù)據(jù)庫名+表名)
replicate_do_table=db1.tb1
statement模式:
use db1; insert into tb1 values (22);
insert into db1.tb1 values (22);
兩者的復制結果一致。
(同樣do 和 ignore 不要混用,除非出現(xiàn)過濾DB的情況)
3、有DB過濾規(guī)則的時候,statment模式必須使用USE語句,不能出現(xiàn) db.表名,db.視圖,db.存儲程序這樣的形式。row模式完勝!
replicate-ignore-db = db1
replicate-do-table = db2.tbl2
USE db1;
INSERT INTO db2.tbl2 VALUES (1);
row模式下,
默認DB不是db1,所以跳過第一條規(guī)則,執(zhí)行表的規(guī)則,行被插入
statement模式下,
insert 語句被忽略,表的過濾規(guī)則已經(jīng)在DB級別停止,所以沒有做檢查。
Replicate_Do_DB: db1
Replicate_Ignore_DB: db2
statement模式:
使用use 語句
use db1;insert into tb1 values (1);
use db2;insert into tb2 values (2);
以上在slave上均能正確復制,tb1 有數(shù)據(jù),tb2沒有數(shù)據(jù)。
不使用use 語句
insert into db1.tb1 values (11);
insert into db2.tb2 values (11);
結果tb1沒有數(shù)據(jù),tb2也沒有數(shù)據(jù)(按照文檔上來講,應該有的)
row模式:
無論是否使用use 語句,均能正確復制
小結:對于statement模式,SQL語句必須使用use 語句,并設置設置多個replicate_do_db來復制多個DB。
2、只進行表級別過濾的時候,對于statement模式,無論是否使用use語句,均能正確復制。row模式也是可以的。(表名它匹配的表的全名:數(shù)據(jù)庫名+表名)
replicate_do_table=db1.tb1
statement模式:
use db1; insert into tb1 values (22);
insert into db1.tb1 values (22);
兩者的復制結果一致。
(同樣do 和 ignore 不要混用,除非出現(xiàn)過濾DB的情況)
3、有DB過濾規(guī)則的時候,statment模式必須使用USE語句,不能出現(xiàn) db.表名,db.視圖,db.存儲程序這樣的形式。row模式完勝!
replicate-ignore-db = db1
replicate-do-table = db2.tbl2
USE db1;
INSERT INTO db2.tbl2 VALUES (1);
row模式下,
默認DB不是db1,所以跳過第一條規(guī)則,執(zhí)行表的規(guī)則,行被插入
statement模式下,
insert 語句被忽略,表的過濾規(guī)則已經(jīng)在DB級別停止,所以沒有做檢查。
相關文章
MySQL觸發(fā)器的使用和inserted和deleted表介紹
這篇文章主要介紹了MySQL觸發(fā)器的使用和inserted和deleted表,觸發(fā)器,就是一種特殊的存儲過程,觸發(fā)器和存儲過程一樣是一個能夠完成特定功能和存儲在數(shù)據(jù)庫服務器上的SQL片段,感興趣想要詳細了解可以參考下文2023-05-05MySQL數(shù)據(jù)庫實現(xiàn)高可用架構之MHA的實戰(zhàn)
本文主要介紹了MySQL數(shù)據(jù)庫實現(xiàn)高可用架構之MHA的實戰(zhàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02MySQL數(shù)據(jù)庫事務transaction示例講解教程
這篇文章主要為大家介紹了MySQL數(shù)據(jù)庫事務transaction的示例講解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10