mysql 主从跨库操作同步探究


我们知道mysql主从复制原理是通过主库binlog日志进行,从库进行日志的接收并恢复到其从库自身,但是有时我们会进行一些比较二的操作,

比如我们非得跨库操作,简单说就是:

1.use A库

2.操作B库

究竟能不能跨库实现同步,需要下面进一步测试

 

 

实验参数:

主库参数:binlog-do-db

从库参数:replicate-do-dbreplicate-wild-do-table

下面分六个情况进行实验,并观察日志变更情况。

实验一:主库、从库均不设置参数

实验二:主库不设置参数、从库设置replicate-do-db

实验三:主库不设置参数、从库设置replicate-wild-do-table

实验四:主库不设置参数、从库设置replicate-do-db和replicate-wild-do-table

实验五:主库设置参数binlog-do-db、从库不设置参数

实验六:主库设置参数binlog-do-db、从库设置replicate-do-db

实验七:主库设置参数binlog-do-db、从库设置replicate-wild-do-table

实验八:主库设置参数binlog-do-db、从库设置replicate-do-db和replicate-wild-do-table

 

实验准备:

主库、从库已经有测试库www,并且有表test(id,name)

 

实验:

实验一、

主库:不设置参数

从库:不设置参数

1、查看binlog日志情况

主库binlog:


从库binlog:


2、主库默认库插入测试数据

use www;

insert into test values(1,'a');        

3、查看从库同步情况


数据已经同

4、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

5、主库跨库插入数据

use mysql;

insert into www.test values(2,'b');        

6、查看从库同步情况


数据已经同步

7、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

 

结论:

a.经测试update、delete同insert;

b.create database同样有效,并且操作后日志会变化并且同步;

c.在主库、从库都不设置相应参数的情况下,经过默认库、跨库操作都可以同步。

 

 

实验二、

主库:不设置参数

从库:设置参数replicate-do-db = www

1、查看binlog日志情况

主库binlog:


从库binlog:


2、主库默认库插入测试数据

use www;

insert into test values(3,'c');        

3、查看从库同步情况


数据已经同步

4、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从

5、主库跨库插入数据

use mysql;

insert into www.test values(4,'d');        

6、查看从库同步情况


数据未同步

7、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

 

结论:

a.经测试update、delete同insert;

b.create database不能同步。

c.在主库不设置相应参数、从库设置replicate-do-db的情况下,经过默认库操作可以同步、跨库操作不同步。

 

实验三、

主库:不设置参数

从库:设置参数replicate-wild-do-table = www.%

1、查看binlog日志情况

主库binlog:


从库binlog:


2、主库默认库插入测试数据

use www;

insert into test values(5,'e');        

3、查看从库同步情况


数据已经同步

4、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

5、主库跨库插入数据

use mysql;

insert into www.test values(6,'f');        

6、查看从库同步情况


数据已经同步

7、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

 

结论:

a.经测试update、delete同insert;

b.create database不能同步。

c.在主库不设置相应参数、从库设置replicate-wild-do-table的情况下,经过默认库、跨库操作可以同步。

 

 

实验四、

主库:不设置参数

从库:设置参数replicate-do-db = www和replicate-wild-do-table = www.%

1、查看binlog日志情况

主库binlog:


从库binlog:


2、主库默认库插入测试数据

use www;

insert into test values(7,'g');        

3、查看从库同步情况


数据已经同步

4、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

5、主库跨库插入数据

use mysql;

insert into www.test values(8,'h');        

6、查看从库同步情况


数据未同步

7、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

 

结论:

a.经测试update、delete同insert;

b.create database不能同步。

c.在主库不设置相应参数、从库设置replicate-do-db和replicate-wild-do-table的情况下,经过默认库操作可以同步、跨库操作不同步。

 

 

实验五、

主库:设置参数binlog-do-db = www

从库:不设置参数

1、查看binlog日志情况

主库binlog:


从库binlog:


2、主库默认库插入测试数据

use www;

insert into test values(9,'j');        

3、查看从库同步情况


数据已经同步

4、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

5、主库跨库插入数据

use mysql;

insert into www.test values(10,'k');        

6、查看从库同步情况


数据未同步

7、查看binlog日志情况

主库:


从库:


插入数据后,日志没有变化,并且同步到从库

 

结论:

a.经测试update、delete同insert;

b.create database不能同步。

c.在主库设置binlog-do-db、从库不设置参数的情况下,经过默认库操作可以同步、跨库操作不同步。

 

 

实验六、

主库:设置参数binlog-do-db = www

从库:设置参数replicate-do-db = www

1、查看binlog日志情况

主库binlog:


从库binlog:


2、主库默认库插入测试数据

use www;

insert into test values(11,'L');        

3、查看从库同步情况


数据已经同步

4、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

5、主库跨库插入数据

use mysql;

insert into www.test values(12,'m');        

6、查看从库同步情况


数据未同步

7、查看binlog日志情况

主库:


从库:


插入数据后,日志没有变化,并且同步到从库

 

结论:

a.经测试update、delete同insert;

b.create database不能同步。

c.在主库设置binlog-do-db、从库设置replicate-do-db的情况下,经过默认库操作可以同步、跨库操作不同步。

 

 

实验七、

主库:设置参数binlog-do-db = www

从库:设置参数replicate-wild-do-table = www.%

1、查看binlog日志情况

主库binlog:


从库binlog:


2、主库默认库插入测试数据

use www;

insert into test values(13,'n');        

3、查看从库同步情况


数据已经同步

4、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

5、主库跨库插入数据

use mysql;

insert into www.test values(14,'o');        

6、查看从库同步情况


数据未同步

7、查看binlog日志情况

主库:


从库:


插入数据后,日志没有变化,并且同步到从库

 

结论:

a.经测试update、delete同insert;

b.create database不能同步。

c.在主库设置binlog-do-db、从库设置replicate-wild-do-table的情况下,经过默认库操作可以同步、跨库操作不同步。

 

 

实验八、

主库:设置参数binlog-do-db = www

从库:设置参数replicate-do-db和replicate-wild-do-table = www.%

1、查看binlog日志情况

主库binlog:


从库binlog:


2、主库默认库插入测试数据

use www;

insert into test values(15,'p');        

3、查看从库同步情


数据已经同步

4、查看binlog日志情况

主库:


从库:


插入数据后,日志有变化,并且同步到从库

5、主库跨库插入数据

use mysql;

insert into www.test values(16,'q');        

6、查看从库同步情况


数据未同步

7、查看binlog日志情况

主库:


从库:


插入数据后,日志没有变化,并且同步到从库

 

结论:

a.经测试update、delete同insert;

b.create database不能同步。

c.在主库设置binlog-do-db、从库设置replicate-do-db和replicate-wild-do-table的情况下,经过默认库操作可以同步、跨库操作不同步。

 

 

总结:

1、主库、从库有没有任何参数,默认库操作都是可以同步的。

2、主库未设置binlog-do-db的情况下:

    a.从库设置replicate-do-db,跨库操作不同步

    b.从库设置replicate-wild-do-table,跨库操作同步

    c.从库设置replicate-do-db和replicate-wild-do-table,跨库操作不同步

    d.跨库操作后binlog会有变化

3、主库设置binlog-do-db的情况下:

    a.从库设置replicate-do-db,跨库操作不同步

    b.从库设置replicate-wild-do-table,跨库操作不同步

    c.从库设置replicate-do-db和replicate-wild-do-table,跨库操作不同步

    d.跨库操作后binlog没有变化

4、只有在主库、从库不设置参数的情况下,主库新建库,从库才可以同步。

 

版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26252014/viewspace-1268479/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26252014/viewspace-1268479/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值