暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【金仓数据库征文】_高可用之初探金仓读写分离集群

229

大家好,我是JiekeXu,江湖人称“强哥”,青学会MOP技术社区联合创始人,荣获Oracle ACE Pro称号,墨天轮MVP,墨天轮年度“墨力之星”,拥有Oracle  OCP/OCM 认证,MySQL 5.7/8.0 OCP认证以及KCA、KCP、KCSM、PCA、PCTA、OBCA等众多国产数据库认证证书,今天和大家一起来看看 高可用之初探金仓读写分离集群。欢迎点击下方“JiekeXu DBA之路”公众号名片可关注我的微信公众号,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送给你!后台回复【加群】,添加我个人微信拉你进群交流学习。

图片

目录
    前言
    KingbaseES 读写分离集群架构  
     集群各组件简介 
    KingbaseES主备同步流程 
    参考链接

前 言

接着上一篇《浅谈集中式数据库高可用》之后,今天来浅浅学习一下金仓数据库的读写分离集群 KES RWC。

KingbaseES 读写分离集群架构

KingbaseES 读写分离集群(KingbaseRWC): KingbaseES 读写分离集群通过物理复制保障企业数据的高可用性、数据保护和灾难恢复并具备读请求的负载均衡能力。

如下图,是 KES 读写分离集群高可用架构可以看到整个集群由 KES、REPMGRD、KBHA 三大组件构成,一主两从的架构下每个节点都有这三个组件构成高可用。该集群有如下四大功能特点:

多实例冗余,支持实例级(含异地)容灾切换。

节点独立存储多份数据冗余,支持数据(存储)级容灾(集群内任一存储完好均可恢复其余节点介质故障)。

平衡应用读写负载,可将交易类系统指向主库,只读类系统指向备库实现读写分离均衡负载。

支持坏块检测与修复。


图片.png

集群各组件简介

Repmgr用于管理KingbaseRWC中的故障转移,可支持一主一备或一主多备,备库支持同步和异步模式。它提供了repmgr和repmgrd两个主要的工具。

Repmgrd主动监视集群各节点状态并执行某些任务的守护进程包括通过检测主库的故障并提升最合适的备库进行故障转移监视和记录复制性能每个数据库节点有一个repmgrd守护进程,主节点的repmgrd只监视本地数据库,备节点的repmgrd会同时监控本地数据库和主数据库。所有节点的状态信息存在repmgr.nodes表里,并通过流复制同步到所有备节点。

kbha是KingbaseRWC集群的复制管理守护进程Kbha启动repmgrd,并且执行KingbaseES的自动恢复每个数据库节点都有一个kbha守护进程,其主要监控并守护repmgrd进程,同时对环境进行监控,包括:磁盘状态、信任网关状态。

sys_securecmdd是集群中自带的工具,集群监控、管理集群时通过sys_securecmdd安全执行命令


KingbaseES 主备同步流程

KingbaseES 主备同步流程

金仓数据守护集群软件(简称:Kingbase Data Watch)是由主库、备库和守护进程组成的集群,主库提供数据库读写服务,备库和主库通过流复制同步数据作为备份,守护进程检查各个数据库状态以及环境状态,当主库故障后可以进行故障转移将备库提升为主库继续对外提供服务,确保主备集群持续提供服务。

 

金仓数据库读写分离集群软件(简称:KingbaseRWC)在金仓数据守护集群软件的基础上增加了对应用透明的读写负载均衡能力。相比数据守护集群,该类集群中所有备库均可对外提供查询能力,从而减轻了主库的读负载压力,可实现更高的事务吞吐率;该软件支持在多个备库间进行读负载均衡。

一般情况下,应用系统中查询等只读操作远多于写入操作,KingbaseRWC为了保证集群在高并发、高压力下性能不下降,需要借助读写分离将读操作分发到备库来分担业务压力,从而减轻主库压力,提升集群的整体吞吐量。

读写分离集群通过配置JDBC来实现的,在 JDBC 配置文件中添加 USEDISPATCH=true 即可


图片.png

如上图所示,整个流程说明大概如下: 

(1) 数据库Walwriter把产生的WAL日志写入磁盘;

(2) WAL日志写入磁盘后,由Walsender进程将新增的日志读取出来并通过流的形式发送给备库;

(3) 备库Walreceiver进程将接收到的WAL日志写入本地WAL段文件;

(4) 备库Startup进程读取WAL日志进行重放,完成数据同步。

实时主备

实时主备是指主备数据最终一致,发生任何故障都不会丢失数据。从上图和上述流程看,要达到实时同步,需要主库等待WAL日志同步到(3)(4)的流程,主库才能继续。实时主备为了保证数据最终一致,牺牲了部分性能。 

异步主备

异步主备不能保证主备数据最终一致,一旦主库发生故障,备库可能没有同步完成主库已经写入的WAL日志,导致丢失部分数据。从上图和上述流程看,异步主备情况下,主库只需要WAL日志同步到流程(1)(2)就可以继续。那么异步主备比实时主备拥有更好的性能。

参考链接

https://bbs.kingbase.com.cn/docHtml?recId=d16e9a1be637c8fe4644c2c82fe16444&url=aHR0cHM6Ly9iYnMua2luZ2Jhc2UuY29tLmNuL2tpbmdiYXNlLWRvYy92OS9oaWdobHkvYXZhaWxhYmlsaXR5L2luZGV4Lmh0bWw

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友或同事,你关心谁就分享给谁,一起学习共同进步~~~

欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

cdb778f873eab7e63fc23f3607d29b23.jpg


最后修改时间:2025-06-30 00:58:30
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论