|
我们知道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:
从库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、查看从库同步情况
http://blog.itpub.net/attachment/201409/12/26252014_141050228804d4.png
数据已经同步
4、查看binlog日志情况
主库:
http://blog.itpub.net/attachment/201409/12/26252014_14105022954uzA.png
从库:
http://blog.itpub.net/attachment/201409/12/26252014_1410502302S3RG.png
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(14,'o');
6、查看从库同步情况
http://blog.itpub.net/attachment/201409/12/26252014_1410502311kqmN.png
数据未同步
7、查看binlog日志情况
主库:
http://blog.itpub.net/attachment/201409/12/26252014_1410502318a7VS.png
从库:
http://blog.itpub.net/attachment/201409/12/26252014_1410502325MPkh.png
插入数据后,日志没有变化,并且同步到从库
结论:
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://blog.itpub.net/attachment/201409/12/26252014_1410502413P9cJ.png
从库binlog:
http://blog.itpub.net/attachment/201409/12/26252014_14105024217zID.png
2、主库默认库插入测试数据
use www;
insert into test values(15,'p');
3、查看从库同步情况
http://blog.itpub.net/attachment/201409/12/26252014_141050243111S1.png
数据已经同步
4、查看binlog日志情况
主库:
http://blog.itpub.net/attachment/201409/12/26252014_14105024487tTd.png
从库:
http://blog.itpub.net/attachment/201409/12/26252014_1410502455gTC1.png
插入数据后,日志有变化,并且同步到从库
5、主库跨库插入数据
use mysql;
insert into www.test values(16,'q');
6、查看从库同步情况
http://blog.itpub.net/attachment/201409/12/26252014_1410502461549b.png
数据未同步
7、查看binlog日志情况
主库:
http://blog.itpub.net/attachment/201409/12/26252014_1410502468H5tq.png
从库:
http://blog.itpub.net/attachment/201409/12/26252014_1410502476iHnU.png
插入数据后,日志没有变化,并且同步到从库
结论:
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、只有在主库、从库不设置参数的情况下,主库新建库,从库才可以同步。
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任! |
|
|