当前位置:首页 > 报告详情

基于Patroni的Citus高可用方案实现-Oracle迁移专场(28页).pdf

上传人: 云闲 编号:87321 2021-01-01 28页 1.77MB

1、嘉宾:赖伟嘉宾:赖伟公司:神州飞象(北京)数据科技有限公司公司:神州飞象(北京)数据科技有限公司邮箱:邮箱:目录/Contents01020304Patroni简单回顾Citus高可用需求分析高可用功能设计其他注意点01 Patroni简单回顾基于Python的开源软件(MIT协议)使用Dcs管理支持虚拟化技术集中式文件配置支持复制槽、pg_rewind可自定义外部callback脚本https:/ 可使用Etcd、Zookeeper或consul作为Dcs支持k8s、docker等容器化搭建及管理单节点部署只需配置一个ymal文件,无需另外配置数据库文件可按照实际情况配置配置是否使用pg _

2、rewind快速恢复可配置on_role_change、on_start、on_stop、on_restart及on_reload等情况的callback scriptpatroni 一般由2n+1个节点组成,正常节点数不少于n+1可提供服务Zk1Zk2Zk3node Anode Bnode CDcsDcs:etcd Consul Zookeeper02 Citus高可用需求分析非非MX节点类型节点类型数据库动作数据库动作元数据更新元数据更新cnwork(主)(备)(备)(主)cn(主)元数据MX节点类型节点类型数据库动作数据库动作元数据更新元数据更新cnwork(主)(备)(备)(主)CN(

3、主)元数据所有MXwork(主)节点故障,无需元数据更新,Patroni可达要求。2.work节点故障,Patroni只能切换数据库实际角色,无法更新元数据。1.主cn节点的元数据更新a.可考虑利用Patroni的callback功能。b.编写其他进程。2.MX架构中的所有MX work节点元数据更新。a.可使用Citus9.0版本(master_node_update加入了异步更新元数据功能)。b.修改源码(如我司加入了fdd_failover函数)。Patroni原生功能,可在on_role_change、on_start、on_stop、on_restart及on_reload等情况下执

4、行指定脚本。优点:Patroni原生功能触发,开发成本较低。缺点:所有节点都需要部署callback脚本,不易管理。patroniwork1 备Zookeeperpromotescriptcallback主cn元数据可在Patroni的上层编写一个程序,用于实时检查元数据信息和集群内部主从真实角色是否对应,从而触发子进程处理。优点:部署和配置方式灵活可调。缺点:1.相对开发成本较高。2.需要保证该程序的可靠性。patroni主cnZookeeperfddswfddsw元数据获取集群状态1.当work节点主备变化后,及时更新主cn节点上元数据信息。2.监控并跟进故障节点,发出告警。3.记录fai

5、lover及switchover时更新节点的步骤,可重入执行。4.需考虑进程本身高可用问题。03高可用功能设计1.只在主cn节点上运行。2.复用Patroni的yml文件。3.灵活扩展,增加可靠性。1.MX与非MX架构在更新元数据时步骤一致。2.整理switchover与failover流程逻辑,封装函数。1.通过Citus中的元数据表与Dcs中的真实角色做比对。(不可取)2.Zookeeper中watch每个scope中的leader键。(有缺陷)3.采用新旧leader比对的方式。1.为什么要做区分?switchover是计划内的,failover突发的。switchover需要一些前置步

6、骤来保障数据不丢失,降低切换风险。2.怎么区分?可在switchover时对Dcs中某个特定的键设置标志值区分。1.某个步骤偶然性执行失败,告警且再次执行。2.fddsw执行中崩溃,新激活的fddsw可从中断处继续执行。12234崩溃激活等待激活1.节点故障、恢复的决策依据。2.判断节点类型依据。cn_nodes:cn_scope:-node_192_168_120_130 -node_192_168_120_131wk_nodes:wk_scope:-node_192_168_120_133 -node_192_

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要介绍了神州飞象(北京)数据科技有限公司使用Patroni和Citus实现高可用性数据库系统的实践。Patroni是一个基于Python的开源软件,支持虚拟化技术,使用Dcs管理,可通过callback脚本进行自定义配置。Citus是一个用于PostgreSQL的扩展,提供了高可用性和扩展性。文章详细介绍了Patroni和Citus在高可用性需求分析、功能设计和其他注意事项方面的应用。其中,Patroni支持k8s、docker等容器化搭建及管理,Citus从9.0版本开始支持异步更新元数据功能。文章还提到了在高可用性设计中的一些关键点,如只在主cn节点上运行、复用Patroni的yml文件、灵活扩展等。此外,文章还给出了一些建议,如使用virtualenv打包Patroni安装、错开时段进行数据库备份等。
Patroni如何实现高可用性? Citus如何处理元数据更新问题? 高可用功能设计中有哪些关键技术?
客服
商务合作
小程序
服务号
折叠