前言:

数据库集群,读写分离现在可以说是项目必备的了,但是我们如何保证其每个数据库的数据一致性?

1 半同步复制

简单的说就是: 主库发生增删改操作的时候,会等从库及时复制了并且通知了主库, 才会把这个操作叫做成功.

优点:保证数据一致性

缺点:就是会慢

专业的讲:

半同步复制,是等待其中一个从库也接收到Binlog事务并成功写入Relay Log之后,才返回Commit操作成功给客户端;如此半同步就保证了事务成功提交后至少有两份日志记录,一份在主库Binlog上,另一份在从库的Relay Log上,从而进一步保证数据完整性;半同步复制很大程度取决于主从网络RTT(往返时延),以插件 semisync_master/semisync_slave 形式存在。

2 数据库中间件

如果有了数据库中间件,所有的数据库请求都走中间件,这个主从不一致的问题可以这么解决:

所有的读写请求都走中间件,然后写的请求路由到主库,读的请求路由到从库

但是我们中间件会记录写库的一个key,在设置一个允许同步时间,假设是1s

当有一个写请求过来时候,生成一个key A ,马上路由写到主库,然后立马有一个读请求过来。 从库可能是旧数据,或者没有来得及同步。 如果时间是在1s内的,就对应的key继续路由到主库。如果在1s以后的,就路由到从库。

说白了,中间件就是给个同步时间,给你同步,在同步时间内,所有的请求都落在主库

3 缓存记录写key法

1 将某个库上的某个key要发生写操作,记录在cache里,并设置“经验主从同步时间”的cache超时时间,例如1s

2 修改数据库

(1)先到cache里查看,对应库的对应key有没有相关数据

(2)如果cache hit,有相关数据,说明这个key上刚发生过写操作,此时需要将请求路由到主库读最新的数据

(3)如果cache miss,说明这个key上近期没有发生过写操作,此时将请求路由到从库,继续读写分离

方案优点:相对数据库中间件,成本较低

方案缺点:为了保证“一致性”,引入了一个cache组件,并且读写数据库时都多了一步cache操作

总结:

就是两个思路

1  半同步复制 , 等从库复制成功才返回写成功

2  设一个key记录着一次写的数据,然后设置一个同步时间,如果在这个时间内,有一个读请求,看看对应的key有没有相关数据,有的话,说明数据近期发生过写事件,这样key的数据就继续读主库,否则就读从库

————————————————

版权声明:本文为CSDN博主「X_Ming_H」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/xmh594603296/article/details/82461222

mysql集群如何保障数据分布均匀_如何保证数据库集群时候,主从库一致性的问题?...相关推荐

  1. mysql galera集群搭建_搭建mysql_galera数据库集群

    1,Mariadb Galera Cluster 集群介绍 Mariadb Galera Cluster 是MySQL高可用性和可扩展的解决方案 Mariadb Galera Cluster 是一套在 ...

  2. mysql集群软件有哪些_浅谈数据库集群软件优缺点有哪些

    满心狼藉 回答时间:2019-12-05 向TA提问 集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提 供网络服务或应用程序(包括数据库.Web服务和文件 ...

  3. redis集群断电数据怎么恢复_如何做到 10T 集群数据安全备份、1GB/s 快速恢复?...

    数据库作为基础设施,其安全性不言而明,因此数据安全备份和恢复功能是在严肃使用场景下的标配.TiDB 作为一款分布式数据库,目前可以满足超大集群的备份恢复的需求,经过测试,10T 数据的备份恢复速度可以 ...

  4. mysql迁移之后读取速度变慢_如何解决数据库迁移之后变慢的问题

    阿里云关系型数据库服务(Relational Database Service,简称RDS)是一种即开即用.稳定可靠.可弹性伸缩的在线数据库服务.具有多重安全防护措施和完善的性能监控体系,并提供专业的 ...

  5. mysql 事务补偿_TCC补偿性策略_彻底学习数据库事务 seata分布式事务 共享 排它锁 死锁 索引 Spring事务 隔离级别等_MySQL视频-51CTO学院...

    课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程.对于难以理解的知识点,全部用画图+实战的方式讲解. 彻底明白事务的四个特性:原子性.一致性.隔离性.持久性,用 ...

  6. mysql按照日期先去重在分组_【巨杉数据库Sequoiadb】【咨询】【数据操作】【聚集查询】在执行聚集查询时,字符类型的字段能否按照实际内容进行分组去重...

    [问题描述] 在聚集查询时,能否将字符类型字段按照实际内容进行分组去重呢? 示例: 插入数据包含字符串 db.cs.cl.insert( { a : {"20190101000000&quo ...

  7. MyCat双机HA高可用集群搭建_Keepalived安装和配置---MyCat分布式数据库集群架构工作笔记0029

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面我们通过haproxy保证了,我们的mycat的,负载均衡,以及高可用性,保护了我们的 myc ...

  8. MyCat双机HA高可用集群搭建_HAProxy安装和配置---MyCat分布式数据库集群架构工作笔记0028

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 前面我们说了mycat部署HA高可用的架构,这里我们来实现它 首先我们去装HAProxy 下载了H ...

  9. 素数p阶群乘法循环群啥意思_如何证明素数阶群都是abel群?

    这个证明需要分两步: 1.首先证明素数阶群都是循环群 2.其次证明循环群一定是abel群 我先来证明1,过程如下: 首先我们假设p为任意素数,存在一个群G,群G的阶数是|G|=p. 根据拉格朗日定理我 ...

最新文章

  1. 单路塔式服务器选购指南 2月最新行情
  2. 计算机类会议论文2021截稿,科学网—人工智能 | 国际会议截稿信息3条 - 李昕的博文...
  3. BeetleX使用bootstrap5开发SPA应用
  4. 有房贷的房子怎么卖?
  5. 跟我学算法-集成算法
  6. Kubernetes 弃用 Docker刷爆了网络,我们公司也慌了!
  7. servlet解析演进(1)
  8. Java从入门到精通 第23章 文件IO操作
  9. 手把手教你在树莓派上搭建ghost个人博客呦
  10. excel文件打不开怎么办_移动硬盘打不开提示格式化怎么办?
  11. Flutter2 的 Sound null safety ?!以及发布pub上面的null safety标签实现
  12. 入手评测 戴尔游匣G15锐龙版 怎么样
  13. 自定义view实现涂鸦(画板)功能
  14. 全球人造丝卫生棉条行业调研及趋势分析报告
  15. JSP~~JSTL~~XML标签库
  16. H.264几大开源编码器简介
  17. 以客户思维重 塑品牌营销模式
  18. Python 最常见的 170 道面试题解析
  19. ubuntu12.04安装极点五笔
  20. PXIe背板 全混合8槽开发设计资料,PXIe背板原理图

热门文章

  1. 2019年4月27日 修改功能
  2. POJ 3422 Kaka's Matrix Travels
  3. BeanFactory 简介以及它 和FactoryBean的区别
  4. Matplotlib学习---用matplotlib画箱线图(boxplot)
  5. 解决outlook无法启动
  6. WCF读取配置动态生成客户端对象
  7. flutter TextField 限制只允许输入数字 小数点
  8. 使用Pycharm开发WordCount程序
  9. Gitlab CI-3.遇到的问题
  10. [BZOJ1026]windy数