我们知道mysql主从复制原理是通过主库binlog日志进行,从库进行日志的接收并恢复到其从库自身,但是有时我们会进行一些比较二的操作,
比如我们非得跨库操作,简单说就是:
1.use A库
2.操作B库
究竟能不能跨库实现同步,需要下面进一步测试
实验参数:
主库参数:binlog-do-db
从库参数:replicate-do-db和replicate-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:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501056YpGj.png?x-oss-process=style/bb)
从库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501065sPp4.png?x-oss-process=style/bb)
2、主库默认库插入测试数据
use www;
insert into test values(1,'a');
3、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501074G68C.png?x-oss-process=style/bb)
数据已经同步
4、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501086xy3e.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501097z1pN.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(2,'b');
6、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501106k70G.png?x-oss-process=style/bb)
数据已经同步
7、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501115rRm0.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501123HGqh.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
结论:
a.经测试update、delete同insert;
b.create database同样有效,并且操作后日志会变化并且同步;
c.在主库、从库都不设置相应参数的情况下,经过默认库、跨库操作都可以同步。
实验二、
主库:不设置参数
从库:设置参数replicate-do-db = www
1、查看binlog日志情况
主库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501293AkTT.png?x-oss-process=style/bb)
从库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501300McMQ.png?x-oss-process=style/bb)
2、主库默认库插入测试数据
use www;
insert into test values(3,'c');
3、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_141050130948Eb.png?x-oss-process=style/bb)
数据已经同步
4、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105013183z3w.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105013266SCY.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(4,'d');
6、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501334db61.png?x-oss-process=style/bb)
数据未同步
7、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501344922B.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105013519mE4.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
结论:
a.经测试update、delete同insert;
b.create database不能同步。
c.在主库不设置相应参数、从库设置replicate-do-db的情况下,经过默认库操作可以同步、跨库操作不同步。
实验三、
主库:不设置参数
从库:设置参数replicate-wild-do-table = www.%
1、查看binlog日志情况
主库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501470po64.png?x-oss-process=style/bb)
从库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501477UU35.png?x-oss-process=style/bb)
2、主库默认库插入测试数据
use www;
insert into test values(5,'e');
3、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105014869IFX.png?x-oss-process=style/bb)
数据已经同步
4、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501494cOWr.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501500Na2P.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(6,'f');
6、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501508xuW3.png?x-oss-process=style/bb)
数据已经同步
7、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501516UABK.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_141050152352F7.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
结论:
a.经测试update、delete同insert;
b.create database不能同步。
c.在主库不设置相应参数、从库设置replicate-wild-do-table的情况下,经过默认库、跨库操作可以同步。
实验四、
主库:不设置参数
从库:设置参数replicate-do-db = www和replicate-wild-do-table = www.%
1、查看binlog日志情况
主库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501618549k.png?x-oss-process=style/bb)
从库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501626sytm.png?x-oss-process=style/bb)
2、主库默认库插入测试数据
use www;
insert into test values(7,'g');
3、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501637LgNR.png?x-oss-process=style/bb)
数据已经同步
4、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105016463TvB.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501653kYOf.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(8,'h');
6、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501663yytz.png?x-oss-process=style/bb)
数据未同步
7、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501671ApA6.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105016783BFb.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
结论:
a.经测试update、delete同insert;
b.create database不能同步。
c.在主库不设置相应参数、从库设置replicate-do-db和replicate-wild-do-table的情况下,经过默认库操作可以同步、跨库操作不同步。
实验五、
主库:设置参数binlog-do-db = www
从库:不设置参数
1、查看binlog日志情况
主库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501802GZ7P.png?x-oss-process=style/bb)
从库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501810eZ97.png?x-oss-process=style/bb)
2、主库默认库插入测试数据
use www;
insert into test values(9,'j');
3、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501817H4xF.png?x-oss-process=style/bb)
数据已经同步
4、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501841J7gN.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501900MTHd.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(10,'k');
6、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501910f9la.png?x-oss-process=style/bb)
数据未同步
7、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105019332U5m.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410501942880q.png?x-oss-process=style/bb)
插入数据后,日志没有变化,并且同步到从库
结论:
a.经测试update、delete同insert;
b.create database不能同步。
c.在主库设置binlog-do-db、从库不设置参数的情况下,经过默认库操作可以同步、跨库操作不同步。
实验六、
主库:设置参数binlog-do-db = www
从库:设置参数replicate-do-db = www
1、查看binlog日志情况
主库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502070Aroj.png?x-oss-process=style/bb)
从库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502086D55W.png?x-oss-process=style/bb)
2、主库默认库插入测试数据
use www;
insert into test values(11,'L');
3、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502094WXA0.png?x-oss-process=style/bb)
数据已经同步
4、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502101Ibd4.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502110488j.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(12,'m');
6、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105021177tMk.png?x-oss-process=style/bb)
数据未同步
7、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502124qVnc.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502131TTFS.png?x-oss-process=style/bb)
插入数据后,日志没有变化,并且同步到从库
结论:
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:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502273LiNF.png?x-oss-process=style/bb)
从库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502280cUwZ.png?x-oss-process=style/bb)
2、主库默认库插入测试数据
use www;
insert into test values(13,'n');
3、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_141050228804d4.png?x-oss-process=style/bb)
数据已经同步
4、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105022954uzA.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502302S3RG.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(14,'o');
6、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502311kqmN.png?x-oss-process=style/bb)
数据未同步
7、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502318a7VS.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502325MPkh.png?x-oss-process=style/bb)
插入数据后,日志没有变化,并且同步到从库
结论:
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:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502413P9cJ.png?x-oss-process=style/bb)
从库binlog:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105024217zID.png?x-oss-process=style/bb)
2、主库默认库插入测试数据
use www;
insert into test values(15,'p');
3、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_141050243111S1.png?x-oss-process=style/bb)
数据已经同步
4、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_14105024487tTd.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502455gTC1.png?x-oss-process=style/bb)
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(16,'q');
6、查看从库同步情况
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502461549b.png?x-oss-process=style/bb)
数据未同步
7、查看binlog日志情况
主库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502468H5tq.png?x-oss-process=style/bb)
从库:
![](http://img.blog.itpub.net/blog/attachment/201409/12/26252014_1410502476iHnU.png?x-oss-process=style/bb)
插入数据后,日志没有变化,并且同步到从库
结论:
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/