MySQL複製過濾注意事項

來源:互聯網
上載者:User

1、replicate_do_db 和 replicate_ignore_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 有資料,tb2沒有資料。
 
不使用use 語句
 insert into db1.tb1 values (11);
insert into db2.tb2 values (11);
結果tb1沒有資料,tb2也沒有資料(按照文檔上來講,應該有的)
 
row模式:
 無論是否使用use 語句,均能正確複製
 小結:對於statement模式,SQL語句必須使用use 語句,並設定設定多個replicate_do_db來複製多個DB。
 
2、只進行表層級過濾的時候,對於statement模式,無論是否使用use語句,均能正確複製。row模式也是可以的。(表名它匹配的表的全名:資料庫名+表名)
 replicate_do_table=db1.tb1
 statement模式:
 use db1; insert into tb1 values (22);
 insert into db1.tb1 values (22);
 兩者的複製結果一致。
 (同樣do 和 ignore 不要混用,除非出現過濾DB的情況)
 
3、有DB過濾規則的時候,statment模式必須使用USE語句,不能出現 db.表名,db.視圖,db.儲存程式這樣的形式。row模式完勝!
 replicate-ignore-db = db1
 replicate-do-table = db2.tbl2
 
USE db1;
 INSERT INTO db2.tbl2 VALUES (1);
 
row模式下,
 預設DB不是db1,所以跳過第一條規則,執行表的規則,行被插入
 
statement模式下,
 insert 語句被忽略,表的過濾規則已經在DB層級停止,所以沒有做檢查。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.