mysql集群如何保障数据分布均匀_如何保证数据库集群时候,主从库一致性的问题?...
前言:
数据库集群,读写分离现在可以说是项目必备的了,但是我们如何保证其每个数据库的数据一致性?
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集群如何保障数据分布均匀_如何保证数据库集群时候,主从库一致性的问题?...相关推荐
- mysql galera集群搭建_搭建mysql_galera数据库集群
1,Mariadb Galera Cluster 集群介绍 Mariadb Galera Cluster 是MySQL高可用性和可扩展的解决方案 Mariadb Galera Cluster 是一套在 ...
- mysql集群软件有哪些_浅谈数据库集群软件优缺点有哪些
满心狼藉 回答时间:2019-12-05 向TA提问 集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提 供网络服务或应用程序(包括数据库.Web服务和文件 ...
- redis集群断电数据怎么恢复_如何做到 10T 集群数据安全备份、1GB/s 快速恢复?...
数据库作为基础设施,其安全性不言而明,因此数据安全备份和恢复功能是在严肃使用场景下的标配.TiDB 作为一款分布式数据库,目前可以满足超大集群的备份恢复的需求,经过测试,10T 数据的备份恢复速度可以 ...
- mysql迁移之后读取速度变慢_如何解决数据库迁移之后变慢的问题
阿里云关系型数据库服务(Relational Database Service,简称RDS)是一种即开即用.稳定可靠.可弹性伸缩的在线数据库服务.具有多重安全防护措施和完善的性能监控体系,并提供专业的 ...
- mysql 事务补偿_TCC补偿性策略_彻底学习数据库事务 seata分布式事务 共享 排它锁 死锁 索引 Spring事务 隔离级别等_MySQL视频-51CTO学院...
课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程.对于难以理解的知识点,全部用画图+实战的方式讲解. 彻底明白事务的四个特性:原子性.一致性.隔离性.持久性,用 ...
- mysql按照日期先去重在分组_【巨杉数据库Sequoiadb】【咨询】【数据操作】【聚集查询】在执行聚集查询时,字符类型的字段能否按照实际内容进行分组去重...
[问题描述] 在聚集查询时,能否将字符类型字段按照实际内容进行分组去重呢? 示例: 插入数据包含字符串 db.cs.cl.insert( { a : {"20190101000000&quo ...
- MyCat双机HA高可用集群搭建_Keepalived安装和配置---MyCat分布式数据库集群架构工作笔记0029
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 上面我们通过haproxy保证了,我们的mycat的,负载均衡,以及高可用性,保护了我们的 myc ...
- MyCat双机HA高可用集群搭建_HAProxy安装和配置---MyCat分布式数据库集群架构工作笔记0028
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 前面我们说了mycat部署HA高可用的架构,这里我们来实现它 首先我们去装HAProxy 下载了H ...
- 素数p阶群乘法循环群啥意思_如何证明素数阶群都是abel群?
这个证明需要分两步: 1.首先证明素数阶群都是循环群 2.其次证明循环群一定是abel群 我先来证明1,过程如下: 首先我们假设p为任意素数,存在一个群G,群G的阶数是|G|=p. 根据拉格朗日定理我 ...
最新文章
- 单路塔式服务器选购指南 2月最新行情
- 计算机类会议论文2021截稿,科学网—人工智能 | 国际会议截稿信息3条 - 李昕的博文...
- BeetleX使用bootstrap5开发SPA应用
- 有房贷的房子怎么卖?
- 跟我学算法-集成算法
- Kubernetes 弃用 Docker刷爆了网络,我们公司也慌了!
- servlet解析演进(1)
- Java从入门到精通 第23章 文件IO操作
- 手把手教你在树莓派上搭建ghost个人博客呦
- excel文件打不开怎么办_移动硬盘打不开提示格式化怎么办?
- Flutter2 的 Sound null safety ?!以及发布pub上面的null safety标签实现
- 入手评测 戴尔游匣G15锐龙版 怎么样
- 自定义view实现涂鸦(画板)功能
- 全球人造丝卫生棉条行业调研及趋势分析报告
- JSP~~JSTL~~XML标签库
- H.264几大开源编码器简介
- 以客户思维重 塑品牌营销模式
- Python 最常见的 170 道面试题解析
- ubuntu12.04安装极点五笔
- PXIe背板 全混合8槽开发设计资料,PXIe背板原理图