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主从安装

参考:http://crazytechnology.blog.51cto.com/6906973/1640197

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;

#如果在永久有效,请将其配置在my.cnf配置文件中

[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;

#如果在永久有效,请将其配置在my.cnf配置文件中

要重启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/my.cnf中配置

[msyqld]

relicate-do-db=syncdb

replicate-ignore-db=ignoredb

保存退场,然后重启mysqld进程。

2、在master中创建两个数据库

mysql> create database syncdb;

mysql> create database ignoredb;

在slave中查看:

由此可看到,ingoredb没有被slave同步过来,符合逻辑。

还可以对某个数据库的某张表进行控制,此处不再演示。

时间: 2024-10-03 23:07:06

mysql 主从半同步模式和数据库同步过滤的相关文章

mysql数据库主从同步配置教程--数据库同步

背景: 最近有一个mysql数据库同步的需求,我用了mysql主从同步的方法来实现.下面把步骤记录一下. 环境和拓扑 操作系统:Centos6.6 X64 mysql版本:5.1.73 Master: 10.6.1.210 Slave:  10.6.1.211 需求: 实现Master上test库同步到Slave上,但是禁止同步该库下的AA表 1.配置Master上的my.cnf #vim  /etc/my.cnf 添加内容到[mysqld]下,设定只同步test 数据库: [mysqld] l

sql数据同步_sql数据同步软件_sql数据库同步

COS 迁移 SQL Server 数据 操作场景云数据库 sql server 支持用户通过 cos 文件来进行数据迁移. 注意: 迁移之前需保证目的实例的 sql server 版本不低于源实例的版本. 迁移的 bak 文件需保证每个 bak 文件只包含一个库. 迁移库不能与云 sql server 库有库名重复的情况. 操作步骤上传备份至 cos登录 腾讯云控制台,在左上角选择[云产品]&... 简介 database云数据库基于开源数据库mysql专业打造的高性能分布式数据存储服务. s

两种同步模式:状态同步和帧同步

https://zhuanlan.zhihu.com/p/36884005?utm_medium=social&utm_source=qq 一.同步 所谓同步,就是要多个客户端表现效果是一致的,例如我们玩王者荣耀的时候,需要十个玩家的屏幕显示的英雄位置完全相同.技能释放角度.释放时间完全相同,这个就是同步.就好像很多个人一起跳街舞齐舞,每个人的动作都要保持一致.而对于大多数游戏,不仅客户端的表现要一致,而且需要客户端和服务端的数据是一致的.所以,同步是一个网络游戏概念,只有网络游戏才需要同步,而

[db2数据库数据同步解决方案]db2数据库同步

db2look-dpayment-a-e-x-0cre_stp.sql db2-tvfcre_stp.sql db2look-i指定用户-w指定密码 2 db2move导出数据文件 db2moveexport db2move导出数据 db2moveimport truncatetable删除表中的所有行 要将数据倒入一个指定的schema的中需要修改 导入数据文件中的db2move.lst文件将里面的shema该改为需要导入数据的shema 3 导出一个指定schema的数据 db2moveoc

数据库同步工具HKROnline SyncNavigator SQL Server互同步MySQL

需要联系我QQ:786211180 HKROnline SyncNavigator 是一款专业的 SQL Server, MySQL 数据库同步软件.它为您提供一种简单智能的方式完成复杂的数据库数据同步,分发操作. 支持 Windows XP / Windows 2003 以上所有操作系统 支持同构数据库同步,异构数据库同步,定时同步,增量同步,断点续传 完整支持 Microsoft SQL Server 2000, 2005, 2008 支持 Mysql 4.1 5.0 5.1 5.4 5.5

SyncNavigator数据库同步软件8.4.1 中文版

SyncNavigator是一款专门用于SqlServer.Mysql数据同步的软件,由国内顶级开发团队开发完成,经历8年逐步完善,目前具备强大的数据同步功能,国内很多大型连锁超市,企业,公司都在用SyncNavigator数据同步软件进行着数据同步服务. 它可以为我们提供智能化数据同步,对您重要的数据库进行实时同步操作,也可以设置定时任务传输,即使您的来源数据库和目标数据库版本不一样,表结构不一样,甚至是字段不一样,SyncNavigator也可以轻松帮您实现高效传输同步. 如果来源数据库和目

DataUml Design 教程3-模型与数据库同步

上一节我们已经建立好了数据模型,那么怎么让数据模型和数据库进行同步呢?模型同步到数据库非常简单,只需要模型绑定到数据库即可.DataUml Design目前支持和Oracle与MS Server数据库进行同步. 模型绑定到数据库这里就不再讲解了,不懂的请看上一节内容. 1.同步数据表(模型同步到数据库) 同步原则:①先同步主表,后同步子表.②数据库中表不存在则创建新表,表存在则修改表. 这里我们同步顺序为:供应商信息->采购订单->采购明细 1).选择"供应商信息"单击右键

EtherCAT 同步模式

EtherCAT三种同步方式自由运行模式 (Free Run:非同步运行)自由运行模式通过应用程序控制器的本地计时器中断启动.本地周期从通信周期或主站周期独立出来单独运行. SM2事件同步模式(Synchronous with SM2 Event)由于从站的处理与SM2事件周期相对应,因此从站的处理保持与SM2事件同步.运行时使用本地周期时间直到收到SM2事件.由于有些伺服驱动器中的Output绝对有效,因此无法执行SM3事件同步. DC模式(SYNC0事件同步)SYNC0事件收信后开始从站的本

mysql主从和mysql主主和半同步复制

一.准备(主从都需要配置):     yum -y install mysql mysql-server #安装mysql   yum -y install ntpdate #安装时间同步   echo '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root #配置网络时间同步   service mysqld start #启动服务   chkconfig --add