AI智能摘要
你是否想过,数据库的高可用性究竟如何守护企业数据的生命线?TcaplusDB 通过多重机制构建稳定基石:管理节点与接入层冗余部署,存储层主从无损切换,故障自动转移不中断业务。它如何用 binlog 同步保障数据一致?为何能容忍 10ms 数据丢失却仍被客户接受?揭秘其同城多机房部署、周期性全量校验与冷备一致性策略,更有亚健康检测与过载保护双保险。这套支撑核心业务连续性的系统,背后藏着怎样的灾备逻辑?
— AI 生成的文章内容摘要
随着信息化的发展,数据库已经是企业正常运营必不可少的工具,企业的所有数据都存储在数据库上,因此可以说数据库的可靠与否关系着企业的生死存亡。
因此,数据的保护和备份是数据库业务的重中之重,系统的可用性以及数据的可靠性对数据库来说都是至关重要的。
数据库的可用性是指数据库在规定的条件下使用时维持其正常功能的能力。其量化参数为可用度,表示数据库产品在规定的条件下使用时,在某时刻维持其正常业务功能的概率。高可用性的数据库提供自动快速地转移到备份的全自动故障转移,这样,用户和应用程序可以继续工作,而不会中断。
而数据一致性指数据库的关联数据之间的逻辑关系是否正确和完整,数据一致性可以确保用户所取的数据结果的一致。
而对于TcaplusDB而言,设计数据库系统的可用性和数据一致性,最重要的是满足用户的需求,从用户的需要出发,才能够设计出最好的数据库。
下面TcaplusDB君将介绍TcaplusDB的高可用性和数据安全性以及灾备机制。
高可用
TcaplusDB组件默认采用高可用部署:
- 管理节点tcapcenter采用Master/Slave模式部署,当Master故障时自动切换到Slave。
- 管理节点tcapdir会部署多个进程。
- 接入层tcaproxy采用冗余方式,单个接入层节点故障不会导致用户请求处理异常。
- 存储层tcapsvr,采用Master/Slave模式,主从切换无损。 存储层tcapsvr Master/Slave和接入层tcaproxy部署优先采用同城跨机房部署,也支持跨机架、跨交换机、跨楼层等部署方式。
数据一致性保障
对于TcaplusDB来说,有完善的数据一致性保障措施,具体如下所示:
- 正常读写场景:主备通过binlog来保证数据一致性,主备会按严格一致的时间顺序执行binlog;主备时间差约10ms; 业务读写请求均在主节点执行。
- 主备切换: 系统主动切换会先等待数据完全同步后,再进行切换。故障切换若因master进程已不存在, 可能丢失10ms左右数据,此时因老请求还连在原master上,TcaplusDB主备同步目前采用的是异步写的机制,当数据写主过程中故障,有可能数据还未来得及同步备机连接就断了,此时数据就可能会丢失,目前所使用的内外客户对这种损失程度还处于可接受范围,不会对业务造成太大影响。目前针对这个情况,项目组也在计划设计强同步机制,确保数据不会丢,不过带来的就是会牺牲一定的吞吐量。
- 周期性主备数据一致性全量对比: 根据用户需要,在低峰期对全量数据做一致性对比。对比过程因前端读写产品的不一致会根据记录修改时间自动判断并重复校验, 以发现系统潜在的不一致风险。 通常做法是抽查一些核心表的部分数据分片来进行全量比对,以保障比对效率。
- 冷备数据一致性保障: 备节点在做全量冷备时,冷备开始时间点全量数据文件处于完全静止状态,此时全量数据采用字节copy来进行备份, 完全无一致性问题。 且在冷备期间,前端读写完全不受影响,新请求会写入小的修改集,请求会合并全量数据和小修改集。
- 数据落地安全保障: 业务数据在存储节点落地时有CRC校验, 若因数据被篡改, CRC校验会失败, 不会因此返回给用户错误的数据。
灾难恢复
TcaplusDB API维护了一致性Hash环,当增加或者减少接入层节点时,TcaplusDB API会自动调整接入层tcaproxy的信息。
- 接入层异常:TcaplusDB每秒会向接入层tcaproxy发送心跳,若接入层节点在10s内没有返回响应,则TcaplusDB API会主动标注该节点不可用,使用其他节点。
- 存储层异常:tcapsvr Slave发生异常时会被一个新的Slave节点替换。如果tcapsvr master发生异常, Slave会切换成Master,切换过程中的用户请求失败,建议开发者增加重试逻辑代码。Master/Slave支持亚健康切换,读写错误率达到阈值时(默认80%)即进行主从切换,如下图:
![[TcaplusDB知识库]TcaplusDB的高可用性和数据安全性介绍](https://www.it2021.com/wp-content/themes/begin/img/loading.png)
灾难恢复示意图
接入层tcaproxy和存储层tcapsvr均有过载保护功能,超过预留读写的请求会触发错误码返回。
最后
我们已经了解了 TcaplusDB 的高可用性和数据安全性以及灾备机制,后续我们将揭开更多TcaplusDB设计的特殊奥秘。

北京市 1F
这个主从切换10ms数据丢失能接受吗?
湖北省武汉市 2F
感觉架构图还挺清晰的,就是不知道实际部署起来复杂不复杂
北京市 3F
我们公司用的就是TcaplusDB,高可用这块确实稳,没出过啥大问题
印度尼西亚 4F
异步同步改强同步的话吞吐量会降多少啊?
北京市 B1
@ 糖果风筝 官方说强同步会牺牲约10%~20%的吞吐,具体要看业务写入量。
湖北省武汉市 5F
之前用过别的数据库,主备切换经常出问题,这个看起来机制完善多了
广东省广州市 B1
@ 番茄牛腩 确实,自动切换省了不少手工介入的时间。
山东省 6F
CRC校验具体是怎么实现的?能防止恶意篡改吗?
日本 7F
同城跨机房部署成本高不高?小公司用得起吗?
韩国 8F
数据一致性对比只抽查核心表,万一非核心表出问题咋办?🤔
日本 9F
过载保护触发错误码,客户端是不是得做好重试?
新加坡 10F
这种架构对运维要求应该不低吧,有没有配套的管理工具?
浙江省 B1
@ 大象园丁 Tcaplus自带的运维控制台可以监控主备状态和切换日志,降低了手动操作的门槛。
台湾省 11F
这主备切换确实稳,体验不错。
上海市闵行区 12F
看图挺直观的,整体设计挺靠谱。
韩国 13F
我公司用了半年,故障转移几乎感受不到,业务几乎不中断,真的很放心。
韩国 14F
另外,Tcaplus的监控平台可以实时查看主备同步延迟,帮助运维快速定位问题。
广东省广州市越秀区 15F
强同步会导致吞吐量下降多少?
马来西亚 16F
跨机房部署时,网络延迟会不会影响切换?
泰国 17F
10ms丢失有点风险,关键业务要多防护。
上海市奉贤区 18F
前几天迁到Tcaplus,切换顺畅,省心。
湖南省 19F
我之前在别的DB踩过坑,主备切换卡死半小时,这次看Tcaplus的自动切换机制,感觉安心多了。
山东省潍坊市 20F
成功率100%是理想值,实际还得看硬件。
湖北省武汉市 21F
这个CRC校验机制挺实用的,能防数据被改。
湖南省株洲市 B1
@ 吉他爱好者 CRC校验算是数据安全的基础保障了
湖北省荆州市 22F
有人说同城跨机房成本高,结果发现只要合理规划机房布局,投入并不像想象中那么贵。
日本 23F
整体架构画得挺清晰。
日本 24F
看了架构图发现,tcaproxy节点是流量入口,若这个节点出现单点故障,整体系统会自动切换到其他节点,真是把高可用做到了极致,尤其是心跳检测机制,10秒内不响应就剔除,省了很多排查时间。👍
日本 25F
从数据安全来看,CRC校验加上全量冷备的字节拷贝,基本可以防止数据被篡改或在备份时出现不一致,尤其是冷备期间对业务几乎无影响,这点对业务连续性非常关键,值得推荐。
澳大利亚 26F
主从切换那块的10ms数据丢失风险有点意思
上海市 B1
@ 云游的旅者 异步机制的通病,就看业务能不能接受了。
重庆市 27F
冷备期间业务不受影响这点挺实用的