日期:2014-05-16 浏览次数:20761 次
??大家都知道 replicate-wild-do-table可以配置只同步部分表,由于其支持通佩符,带来便利。但也存在一些风险。
?
??? 问题描述:
??? 假设M、S两个MySQL Server, S设置为M的从库,且设置replicate-wild-do-table=test.a%.
??? 此时在M库按照如下顺序操作:
1)????? create table a1(f int);
2)????? alter table a1 rename to b1;
3)????? alter table b1 rename to a1;
??? 此时分别在M、S中show tables发现,M中有a1, S中只有b1.
??? 原因是步骤3没有在S中重放。
?
??? 相关代码:
??? 在主从过程中,从库S会将主库的所有命令都写入本地日志,但在执行之前会先判断是否符合replicate[-wild]-do-table的条件。
??? 从库判断表名是否符合同步条件则是在rpl_filter.cc:tables_ok中,判断的输入是thd.lex.query_tables。 而对于