mysql主从同步数据过滤_mysql主从半同步模式和数据库同步
过滤
好看的喜剧片在mysql主从架构中,默认采⽤的是异步模式,也就是在master中将数据保存在数据库,再将操作写到bin-log中即响应给客户端。⾄于slave是否同步了⼆进制⽂件,是否完成了本地操作,master⽆从得知。异步模式固然能以最快的速度响应给客户端,减少⽤户的等待时间,但在⼀些数据同步、安全性较⾼的场景,要求slave中的数据要尽最⼤能⼒与master保持⼀致,那么半同步模式就可以⽤上了。
mysql的半同步模式是以插件的⽅式由google提供的。主要⽂件在${mysql_home}/lib/plugin下。⽂件主要有两个semisync_master.so 和semisync_slave.so。由名字可以看出semisync_master.so主要master提供的插件,semisync_slave.so主要为slave提供的插件。下⾯来实现mysql的半同步模式。
1、环境准备
os:centos 6.4
mysql-version:5.5.28
slave:192.168.1.108
master:192.168.1.101
2、mysql主从安装
3、安装semisync_master.so和semisync_slave.so
在master中:
mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';
查看是否已经安装
mysql> show global variables like '%rpl%';
rpl_semi_sync_master_enbled:是否允许半同步
rpl_semi_sync_master_timeout:等待slave的超时时间
rpl_semi_sync_master_trace_level:追踪级别
rpl_semi_sync_master_wait_no_slave:如果没有slave,是否等待
诘责是什么意思>有害的昆虫启动半同步模式
set global rpl_semi_sync_master_enbled = 1;
#如果在永久有效,请将其配置在myf配置⽂件中
[mysqld]
rpl_semi_sync_master_enbled=1
rpl_semi_sync_master_timeout=1000#设置超时时间为1s
在slave中:
install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
启动半同步模式
set global rpl_semi_sync_slave_enbled = 1;
#如果在永久有效,请将其配置在myf配置⽂件中
要重启slave的io_thread才会⽣效
stop slave io_thread;
start slave io_thread;
在master中查看
刘诗诗和杨幂谁漂亮mysql> show global status like '%rpl%';
可以看到Rpl_semi_sync_master_Clients的值为1,说明已经有⼀个salve连上来了。
4、测试
在master中
mysql> user leedb;
mysql> create table leetest (id int ,name varchar(16));
可以看到执⾏sql语句的时间要稍微长⼀些,主要是由于要等待io_thread将⼆进制⽇志同步。
在slave中将io_thread停掉
mysql> stop slave io_thread;
再在master中执⾏
mysql> create table leetest2 (id int ,name varchar(16));
可以看到此时master处于block状态
等待10s后即完成操作,这10s就是上⾯设置的超时时间。
有⼀点要注意的是此时由于slave io_thread停⽌运⾏,mysql会⾃动将半同步模式设置为异步
模式。此时再执⾏其它建表语句,就会很快了。
mysql的slave-master同样⽀持数据库、表同步过滤功能。过滤可以在master中设置,也可以slave中进⾏,但建议是在slave中。因为如果在master中进⾏库,表过滤的话,那么bin log⽇志⽂件就会不完整,在极端情况下部分数据就⽆法通过bin log进⾏即时点恢复。
数据库、表过滤主要是通过在slave主要有以下⼏个设置
relicate-do-db:数据库同步的⽩名单
replicate-ignore-db:数据库同步的⿊名单
种子的传播方式replicate-do-table:表同步的⽩名单
replicate-ignore-table:表同步的⿊名单
replicate-wild-do-table:表的⽩名单(可⽀持统配符) replicate-wild-ignore-table:表的⿊名单(可⽀持统配符) 1、在slave的/etc/myf中配置
[msyqld]
relicate-do-db=syncdb
replicate-ignore-db=ignoredb
保存退场,然后重启mysqld进程。
2、在master中创建两个数据库
mysql> create database syncdb;
mysql> create database ignoredb;
在slave中查看:
倡议书的写法由此可看到,ingoredb没有被slave同步过来,符合逻辑。还可以对某个数据库的某张表进⾏控制,此处不再演⽰。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论