redis启用后mysql丢失问题_Redis和Mysql意外情况处理

1.Mysql可能出现的问题

1.异步复制导致数据丢失

master的数据还没来得及同步给slave 就挂掉了

怎么解决?

min slave to write 1

min slave max lag 1

要求至少有1个slave,数据复制和同步的延迟不能超过10秒,如果一旦超过10s 那么master就不会再接收任何请求

两个参数 减少异步复制的数据丢失

把数据丢失控制在可控范围内,会在本地写? 如果slave同步速度慢, 就会停止写请求! 在自己内存中 尝试写其他的master 或者停顿一段时间再写

在client做降级,写到本地磁盘里,做限流,减慢请求涌入的速度,或者放到消息队列里面去,去里面取,然后重新发回到master里面去!

2.集群脑裂

master主节点,出现异常性的 有相同数据 相同工作的两个节点 出现两个master主节点,然后产生数据丢失问题

客户端降级,临时本地缓存!10s之后,就往其他的master去写信息

2.Mysql可能出现的问题

如果主库突然宕机,数据还没有同步到从库里,数据就有可能丢失了;

解决办法有两个机制,1.半同步复制,解决主数据库数据丢失问题 2. 并行复制,用来解决主从同步延时问题

半同步复制(semi-sync半同步复制): 主库要求写数据的时候,记录binlog日志而且至少有一台从库把binlog日志同步成功了,并且从库返回一个ack,这里只是拉到从库本地的relay日志里,还没有完全同步,这个时候才会认为写操作成功了,否则写操作过来以后只是写好了binlog日志 还没有同步,就会认为是失败的或者说写操作还没有完成; 如果此时主库挂了,宕机了,就认为写操作是不成功的,不成功的话客户端可以感知到,重试一次,重试的时候从库已经切换成主库了,就可以保证写操作的时候还没有同步到从库,宕机导致数据丢失

并行复制:指的是从库可以开启多个线程,并且读取relay log里的日志,并行的放到不同库的日志,库级别的并行? 可以解决主从同步延时问题;也就是每个线程读某一个库的日志,可以同时读多个库 ,可以加快同步的效率

但是并行复制的意义并不是很大,如果只是针对单个库来操作的话,意义并不大

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值