高可用介绍
数据库高可用集群是一组计算机,他们作为一个整体向用户提供数据库服务,
当主服务器出现故障时,可以将该服务器中的服务、资源、IP等转移到另一台服务器上,从而满足业务的持续性。
Vastbase利用HAS+DCS组件,基于流复制方式同步主库数据应用wal日志,最终持久化存储。部署形态:一主一备,一主两备
逻辑架构
最佳实践
最佳实践:建议使用一主两备架构,使用同步复制+异步复制
组件介绍
HAS V2.0 新特性
1、支持使用配置文件自动化部署Vastbase或openGauss高可用集群
2、支持集群内主备关系切换时自动切换 VIP 绑定关系
3、支持集群内部署级联备
流复制
一、优势
1.实例级别复制
2.DDL复制
3.一致性、可靠性高
二、核心线程
1.主库walsender线程是用来发送WAL日志记录
2.备库walreceiver线程是用来接收WAL日志记录
3.备库startup线程用于从库apply日志
逻辑图
流复制启动过程 1.数据库启动,备库启动startup,walreceiver线程,wal线程向主库发送连接请求。 2.主库收到连接请求后启动walsender线程,并与walreceiver线程建立tcp连接。 3.备库walreceiver线程发送最新的wal lsn给主库。 4.主库进行lsn对比,定期向备库发送心跳信息来确认备库可用性,并且将没有传递的wal日志进行发送, 同时调用SyncRepWaitForLSN()函数来获取锁存器,并且等待备库响应,锁存器的释放时机和主备同步模式的选择有关。 备库调用write()函数将wal写入缓存,然后调用fsync()函数将wal刷新到磁盘,然后进行wal回放。 5.备库向主库返回ack信息,ack信息中包含write_lsn、flush_lsn、replay_lsn用以告知主库当前wal日志在备库的应用位置及状态
复制模式
异步流复制:主库提交的事务不会等待备库接收WAL日志流并返回ACK,因此会存在一定的处理延迟(毫秒级)该模式为默认模式。
同步流复制:主库把WAL日志写入磁盘,同时等待WAL日志记录复制到备库、并且WAL日志记录在任意一个备库写入磁盘后返回Commit结果。
一旦所有备库故障,在主库的应用操作则会被挂起,所以此方式建议是1主2备。