| --binlog-do-db --binlog-ignore-db=ljk 该选项的行为取决于binlog格式 Statement-based logging:当use ljk后(即当前库为ljk时),所有的语句不被记录进binlog 当登陆mysql后不use/或者use ljk之外的库,执行update ljk.table 依然会记录近binlog并复制 Row-based format:告诉服务器不记录任何ljk库下表的更改,无论当前在哪个库(即无论有无use语句,是否use ljk) |
| --replicate-do-db = ljk 该选项的行为取决于binlog格式 Statement-based replication:只有主库在use ljk 之后执行的语句才会被从库复制 无use语句或者use其他库后执行的语句均不被复制 Row-based replication:只有ljk库的更改会被复制(无论use哪个库或者是否use) 无论是否use或use哪个库,ljk库之外的变更都不会被复制 --replicate-ignore-db |
| --replicate-do-table这两个选项在我的实验里跟描述不太一致,详细见下文实验结果 --replicate-ignore-table |
| --replicate-wild-do-table = ljk.% 无论use ljk或use 其他库或不use,对ljk库的更新都能被复制,同时,其他库任何情况下均不会复制(包括建库建表操作) --replicate-wild-ignore-table |
| 库操作: 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; 从库复制 |
| 库操作 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)); 从库不复制 |
| 注:这条规则加完在任何库下执行任何语句均复制;相反,在从库添加replicate-do-table = mysql.%后,在任何库下执行任何sql都不会被复制。不知道是不是bug 库操作: 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,执行建库语句 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)); 从库不复制 |