库操作:
1. 主库不use,执行建库语句
mysql> create database kai;
从库复制
2. 主库use mysql,再执行
mysql> create database kai;
从库复制
在kai数据库执行建表操作
1. 不use
create table kai.li (id int,name char(15));
从库复制
2. use mysql;
create table kai.li (id int,name char(15));
从库复制
3. use 其他库;
create table kai.li (id int,name char(15));
从库复制
对表内容修改:
1. 主库不use,向li表增加数据
insert into kai.li values('1','ljk');
从库复制
2. 主库 use mysql,向li表增加数据
从库复制
3. 主库use 其他库,更新li库(即跨库更新)
mysql> use picture;
mysql> insert into kai.li values('2','lhy');
从库复制
对mysql库进行更改
1. 不 use
mysql> create table mysql.ljk (id int,name varchar(15));
从库不复制
2. Use 其他库
mysql> drop table mysql.ljk;
从库不复制
3. Use mysql
mysql> create table ljk (id int,name varchar(15));
从库不复制
综上参考官方文档以及实验,可得出结论:
对于每一个添加的‘复制过滤’配置,应从两方面考虑:
1. 不用use语句引用库,或者use xxx引用其他库之后再执行sql(又分两部分:对‘过滤的库/表’ 或 ‘对其他库/表’)会怎样
2. use xxx引用‘过滤的库/表’,再执行sql(也分两部分:对‘过滤的库/表’ 或 ‘对其他库/表’)会怎样
除replicate-wild-do-table=/replicate-wild-ignore-table=外,其他过滤规则会受到“binlog_format”以及“当前所在库”的影响(即所谓的跨库问题)
实验也验证了上文提到的“对复制的过滤,采用replicate-wild-do-table/ replicate-wild-ignore-table,比较严格和明确”