2019/04/26 半同步复制和过滤器

在这里插入图片描述
之前的同步异步,就是,两个数据库同步复制,异步复制
远程客户端发送写操作,首先发给调度器,调度器看见时写操作,就发送给master服务器,主服务器就对数据进行更改。更改之后需要后面把更改的数据传送给从服务器,这里面需要花一点时间,如果 是同步复制,必须等更新全部复制过去,到达从服务器数据库,也更新了从服务器数据库,两边都更新好了,才会告诉用户 修改成功,(主从复制有时候间隔特别长,1小时,不可能等1个小时去结束写操作)
默认用的是异步方式,客户端发送请求到调度器,主要在主服务器上发生变化成功,就立即告诉客户端成功 了,不需要等待复制到从服务器。
异步复制就可能造成数据丢失

在这里插入图片描述
为了避免丢失,就一般利用半同步,
就是必须有一台从服务器和主服务器都修改成功了才会返回成功给用户,这个从服务器后期再把它的数据,同步给其他从服务器
这个就是级联复制

在这里插入图片描述
也可以另外拓补,只有一个从服务器同步了就认为成功了
在这里插入图片描述
半同步想要实现,就需要利用插件
在这里插入图片描述
在这里插入图片描述
如何实现半同步,先需要安装半同步的插件
在这里插入图片描述
主服务上需要装半同步插件,从服务器也需要安装半同步插件
在这里插入图片描述
实际就等于基于原来的主从复制实现
在这里插入图片描述
安装插件,系统默认其实就已经安装好了,只要启用就可以
在这里插入图片描述
master在主服务器上去安装,从服务器安装slave
在这里插入图片描述
需要在数据库里启动起来
具体命令
在这里插入图片描述
在这里插入图片描述
按照格式写就可以了
在这里插入图片描述在这里插入图片描述
查看插件列表,现在未安装,还没有
在这里插入图片描述
必须要叫这个名字在这里插入图片描述
现在插件已经安装好
在这里插入图片描述
查看变量,现在还没启用的
在这里插入图片描述
系统变量和状态变量,都没有启用
在这里插入图片描述
可以设置全局变量开启
在这里插入图片描述
这个状态变量已经变成ON了
在这里插入图片描述
在另外的从服务器上也安装插件
在这里插入图片描述
在这里插入图片描述
slave客户端的安装插件和启用
在这里插入图片描述
查看状态变量还是off的
在这里插入图片描述
停止同步,再开始同步,就显示状态了
在这里插入图片描述
到此半同步应该就成功了
主服务器开始生成数据

在这里插入图片描述
从服务器开始同步了
在这里插入图片描述
同步完以后还能去查看其它信息
在这里插入图片描述
平均等待时长(微秒为单位)
在客户端有也可以看变量,到底有没有启用
在这里插入图片描述
服务端可以看到花的时间
在这里插入图片描述
生产中一般主从复制到需要半同步复制,确保服务器至少有一个得到最新的数据,所以每个从服务器上都需要装这个插件
在这里插入图片描述
从服务器启用半同步,先要把复制的线程先停止,stop slave
在这里插入图片描述
复制的过滤,简单来说,就是让两个主从服务器之间,进行复制的时候,可以选择性 的来进行复制
在这里插入图片描述
在这里插入图片描述
如果不想记录第2个数据库的操作,可以让它的操作不写进二进制日志,也就意味着将来第2个数据出现问题,数据就缺失了
在这里插入图片描述
第二种是在从服务器上设置sqlthread这样的线程,让它去读取相关特定的数据库进行还原
中间主服务把数据传到relaylog里,然后经过io线程写到磁盘里
sql线程负责把relaylog整理给io线程,可以设置只要第2个数据库,就不放到本地

在这里插入图片描述
在这里插入图片描述
明明2数据库不需要复制过去,但是白白复制了一份,不仅浪费了带宽还浪费了磁盘空间
在这里插入图片描述
如何实现
在这里插入图片描述
replicate_do_db只挑哪些数据库复制
replicate_ignore_db忽略哪些数据库复制
在不进行忽略之前,db1的内容都会进行复制

在这里插入图片描述

查看另外的从服务器应该是复制过去的,因为没有过滤
在这里插入图片描述
现在要进行过滤
定义之前查看相关变量值

在这里插入图片描述
在这里插入图片描述
全局的还需要停止复制才能设置
设置成功

在这里插入图片描述
查看slave 状态里有没有显示
在这里插入图片描述
在主服务器插入记录,查看是否生效
在这里插入图片描述
从服务器不复制了
在这里插入图片描述
在db2应该能复制成功
在这里插入图片描述
从服务器复制成功
在这里插入图片描述
所以只是针对db1做的过滤
在这里插入图片描述
这个可以用来复制用户数据库,而不复制系统数据库,就可以把数据库过滤掉
在这里插入图片描述
还有一种设置就是binlog_do_db,这个不是变量,而是一个服务器选项
用二进制的方法来过滤db2的 复制(思路就是针对这个数据库,不生成二进制日志)
有多个数据,只能单写一行,一行的写,不能连续写,用,号隔开
因为是服务器选项,所以用命令修改应该不支持

在这里插入图片描述f
服务器选项,选项是配置文件里 –
服务器变量,变量是不带–,要写就是命令行set或者写道my.cnf

在这里插入图片描述
是跟我们二进制格式是密切相关的
在这里插入图片描述
是基于语句型的,就有很多bug
不想复制db2

在这里插入图片描述
在这里插入图片描述
再去插入数据,查看复制过去没有
在这里插入图片描述
没有
在这里插入图片描述
在这里插入图片描述
加了两条记录都没有起作用,说明没有问题
在这里插入图片描述
再另外过滤一个数据库,mysql
在这里插入图片描述
在这里插入图片描述
mysql是系统数据库,比如用户账号
在这里插入图片描述
现在主从是一样的
在这里插入图片描述
创建一个用户
在这里插入图片描述
从服务器可以同步,但是刚才命名设置不能同步了
在这里插入图片描述
在这里插入图片描述
为什么可以复制,是因为二进制日志格式的问题
在这里插入图片描述
如果是语句型的,数据库将不记录任何语句,(默认的数据库不用use来使用的话,是不记录日志的
在这里插入图片描述
写命令的时候,不在任何数据库,没有指定数据库所以基于语句型的就记不住,如何解决问题,改成基于行的二进制日志类型
对于行的记录格式,将记录任何更改

在这里插入图片描述
修改成行的
在这里插入图片描述
在这里插入图片描述
再次创建一个新账号,正常是应该不复制过去,因为有过滤器(刚才是复制成功了
在这里插入图片描述
在服务器查还是有
在这里插入图片描述
再尝试一次
在这里插入图片描述
从服务器又复制过去了
在这里插入图片描述
在这里插入图片描述
二进制格式修改正常
在这里插入图片描述
重新启动一下主服务器,
在这里插入图片描述
主服务器再次做尝试
在这里插入图片描述
查看从服务器是否也删除
在这里插入图片描述
有疑问,没有起到过滤作用
可能因为刚才开启了半同步,两个都是主

在这里插入图片描述从服务器不起用插件,
在这里插入图片描述
两边都删除,恢复干净
在这里插入图片描述
在这里插入图片描述
主服务器创建用户
在这里插入图片描述
让从服务器同步
在这里插入图片描述
从245复制,是否能把账号创建过来
在这里插入图片描述
start slave同步成功,账号复制过来了
在这里插入图片描述
在这里插入图片描述
没有起作用,试试添加表会不会同步
在这里插入图片描述
从服务器,表就没复制过来
在这里插入图片描述
但是用户账号复制过来了
试试跨数据库

在这里插入图片描述
在这里插入图片描述
从服务器又有了,t1没复制过来,t2复制过来了
在这里插入图片描述
一般不建议用,因为会造成数据丢失,要用也是用下面的方法,因为不会影响二进制生成,而且功能比较强,支持过滤表,过滤通配符
在这里插入图片描述在这里插入图片描述
mysql的复制加密
一般来讲,数据库服务器都是在安全的地方,都在自己的机房里,离的也不太远
但是又部分情况下,主服务器和从服务器离的还挺远,有的企业为了安全,异地来实现主从,但是跨机房通讯,中间的线路可能不安全,而mysql数据库复制走的通讯是不加密的,很有可能被第三方截获数据,SSL,还需要搭建CA

在这里插入图片描述
在这里插入图片描述
假设已经申请到CA,现在查看服务器该怎么设置

在这里插入图片描述
ssl是启用加密,默认是不启用的
在这里插入图片描述
disabled是默认目前禁用了ssl加密,如果是NO,不是不启用,而是mysql不支持,不支持的情况下,还得自己编译(如果源码编译没有加这个选项,这个有可能是不支持的,那就只能从头编译了)
在这里插入图片描述
ca的证书文件,
ca给master颁发的证书文件
以及master的私钥文件
这三个放在那里无所谓,只有找个文件夹放一下就好了

在这里插入图片描述
客户端配置
ca的证书
ca给从服务器的证书
从服务器的私钥

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值