阿里 PolarDB 不垃圾,由serverless引发的一场回怼!(2)--他能切库业务不闪断?
❝开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3400人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7 8群已经爆满 9群 300+,开10群PolarDB专业学习群110+)
阿里 PolarDB 真垃圾,由serverless引发的一场回怼!(1)
不知道来龙去买的可以看上面的这篇,事情的发生,这期咱们继续讲到底什么是
下面我们说的是上期没有说完的技术,一个数据库他节点都切换了,他怎么能做到业务无感知他切换了,一般的数据库是无法做到,在数据库版本升级,硬件故障后替换硬件不闪断不影响业务的,PolarDB 不影响的不闪断的核心秘密在哪里。
具体怎么个事情,大家看下面这个帖子起因。今天废话不说,直接进入主题,咱们说干货,说技术。 上期说到无感秒切技术,那么这项技术在PolarDB中是通过VDS 来实现的,voting disk
在vds架构里面,会存在2-3种节点,分别是leader follower,read-only 这里我并没有用官方里面的observer我害怕把OB牵扯进来。
其实无感秒切中的关键就是判断与切换,这里引入了图中的一个好CAS的模块,其实这个模块就是记录,主节点和开了热备的从节点之间的信息,方便比对之间的信息差,因为要切换必须主和从节点之间是信息一致的所以CAS维持之间的信息一致性,并确认谁是主,以及租约的时间。
PCR 则是一个拓扑信息,就理解为这个集群里面的每个机器的户口本,谁是什么角色等等,
那么无感秒切的核心是什么其实说白了就是一个预热系统。
预热系统会预热 buffer pool ,undo ,redo ,binlog (这是针对 polardb for mysql)他要做的就是在原有的系统上,维持一个内存数据的同步,保证我们的预热节点或者说是standby节点,在任何时候都和主节点的数据是一致的。
最后这里有一个需要注意的地方,两个地方
1 事务保持,或者也叫连接保持,这个保持目前仅仅保持的是空闲连接,如果你的连接正在访问数据库是活跃的,且进行了切换,这个是无法进行保持的,正在访问的连接一定会报错,且连接失败,这个咱们是要知识的,千万别不理解,以为什么连接都可以保持,在说PolarDB垃圾了。
2 BINLOG的闪断,这里使用过PolarDB的同学都知道,连接PolarDB的方式是通过代理,通过代理来连接,代理也分集群地址,主节点地址,从节点地址若干,那么这样的情况下如果你通过BINLOG的主节点进行获得BINLOG数据,那么这个无感秒切,对这个部分是无法无感的,也就是你必然感受到,断掉了那一刻,BINLOG数据库无法获得,或感受到断掉了,当然后面会在接回来。
那么无感秒切剋解决什么问题,
1 数据库版本更新导致的闪断
2 数据库故障导致的切换
3 升级硬件降级硬件配置导致的闪断
这些都在无感秒切的解决范围内。
总结:PolarDB 数据库可以支持在以上的操作中,对应用不产生切换和闪断,在高版本的PolarDB 支持正在操作的链接中的事务保持,不产生切换和闪断。
更多详细的说明可以参见官方文档
https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/cluster-node-performance-comparison-before-and-after-hot-standby-is-enabled?spm=a2c4g.11186623.help-menu-2249963.d_6_13_2.6222649238CoF9