PostgreSQL Patroni 3.0 新功能规划 2023年 纽约PG 大会 (音译)

news2024/11/15 11:12:27

开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(共1730人左右 1 + 2 + 3 + 4 +5) 4群(230+),另欢迎 OpenGauss 的技术人员加入。

d6f04a65ca24c5bcce0cfdc00b817b75.png

基于alexander 的俄国口音,部分内容未能完全翻译。

b405f4c5a5fdb307dfd659638e2fa0db.png

大家好我叫亚历山大.库是金,今天我给大家介绍的是patroni 3.0的一些新的规划和功能,主要有以下的一些议题,功能介绍,问题的修复,以及新的功能。

4f6816625fd6a8e3bb7b961ea6dd6071.png

0b572a3d50a76cdbf09f1552057f6f9e.png

Patrnoi 本身支持多种部署,包含最小化部署,支持多种的分布式组件,主要是ETCD ,通过分布式服务,来自动发现节点的状态情况,并将状态进行汇总,通过leader key 来标识当前的primary point 节点,同时这里状态会根据TTL 进行状态在获取,key 是有租约的,所以这些key会在租约到期失效后,进行key 的更新。

9e7865aee4ddf1afda8aaae7e3744c36.png

d541b2dbb1fde24d1174119bc2f313ae.png

当主库出现故障,无法进行KEY 的状态更新,相关的主键的信息就会被抹去,这里的故障的起因,有网络的原因或者主机的原因,数据库服务的原因等等。当超过最大的等待时间后,剩余的两个节点 B C 开始进行选主的竞争,因为他们都发现A 节点不存在了。

1c9d125b70f4d7e2dc5ee6474c3acf18.png

4579a5cb98b69edd383f2909dd4ed1fe.png

1710bce87b031f9fe09e6f58ebf1382e.png

在确认A 节点不存在无法进行连接的情况下, B C 会开始申请主节点,经过分布式选主,最终成功申请到leader的KEY 的节点将成为新的主节点。

713bab1452a7c96ac7d95f3aead233b8.png

e6f140815879e4995705fa59e50b0313.png

在之前的版本的PATRIONI 中有一个问题关于 DCS 导致的误切换的问题,DCS(Distributed configuration store) ,之前的版本的patroni 主要依赖DCS 来解决LEADER 的选举和检测网络分区的工作,这里primary 节点必须在DCS 中更新数据,才能持续的成为主节点,但如果更新失败,则无法成为主节点,PG 会将主节点降级,为解决这个问题,我们引入了一个新的选项,failsafe_mode 他通过在DCS/config 中的全局动态配置进行启用,这里如果主节点可以通过patroni rest api访问到集群中的其他成员,那么这个主节点即使无法更新数据,那么也会持续保留主节点的状态,不会随意降级。

55ac1d384b71e2c978eeb5ad893effc2.png

另一个更新主要是在生产系统中,有使用逻辑复制槽的情况,在进行主从切换的过程中,复制槽会丢失的问题,在之前我们不允许在Patroni 的系统中,重建逻辑复制槽,现在我们可以通过函数pg_replication_slot_advance 来重建复制槽。

5b97614ad0480a626a1a522920006336.png

同时在3.0 针对支持多个同步方式的从库,切换是基于replication lag 的,切换中会更倾向于安全切换。

a5c2af62ced0c46c0331da9af862165d.png

支持PostgreS 13版本中PG_REWIND 中的 --restore-target-wal 的功能,通过但这里不包括在Debain/Ubuntu 中部署的PG13 14 版本。

1bd6d9b8546fd46c4a3d7550fd34a448.png

在配置文件中,也进行了更新,比如针对与配置的参数预先发现其中的错误的问题。

d59f31af78e1153c06e6409efba1c8a0.png

另外还有一些软件方面的改进和增强,我们彻底不在支持低于3.6一下的PYTHON , 并且要使用psycopg3 ,这里我们也会在操作pg_ctl promote 命令前来通过预先的一个脚本,我们认为是一个钩子,来进行一些安全性的判断和切换前的预先的工作。通过也在关闭节点命令前会通过脚步来做一些准备工作,必然把pgboucer先暂停了的工作等等。

cb270d27411acd5f69dddc47a9dd538a.png

e07b3786dabd17886010f2baa4fc8614.png

之前一些链接在判断的时候,是长连接,在这样的方式下会等待很长时间来完成准备的工作,这边进行改善,通过TTL 秒的方式将连接进行关闭。

26ec533ab20955ba32360f91e6220980.png

另外在判断PG 是否存活中,也需要去检测PGDATA 变量, 之前是通过os.listdir()函数来进行判断,但是这里反映的速度很慢,这里我们改变方式通过pg_control文件来获得第一次的数据。

e7473c73f913c95377a468a9f33f4ed4.png

在之前的版本,patroni 在更新状态前会等待postgres 被关闭,但基于PG的关闭在某些情况比较慢,而现在patroni 判断一个节点的关闭是通过pg_controldata 中打印出shut down即可,判断节点关闭。

be3cc7774d6c2e4443efec1cb6d723fa.png

今天是星期六,外面的阳光真好,我没有那么多的时间说,(这不是杜撰这是他的原话),5年前PG10 添加的功能,关于同步复制节点的设置,我们看下面的例子 ANY2(node1 node2)  ANY2(node1,node2,node3),如果要切换我应该切换那个,谁能告诉我怎么办? 

c9ee96fe76a0c787134ea608cb426e0f.png

7aa0c07687a8bd678057c11741b638cb.png

当节点M4加入后,怎么修改相关的配置选择项,怎么能保证修改的选择项是正确的。

e6bcd1220d1f6d162e93447b42aea803.png

另外我们也准备在patroni 中整合关于复制槽failover的部分,虽然patroni我们有了自己的解决方案,但是我们有一些问题没有解决,所以我们在后面要整合新的解决方案,来弥补我们自己的解决方案的问题。

dfe6aac7907748815af75eea4c7e888d.png

除此以外,我们还将添加对于citus的支持的部分,对于read scaling 的改造是简单的。

1512c653c8ff93b82935a830ac420091.png

69025cb5aa31194e522fab2c1b294b51.png

fadec1e002ea09ef2c899045922c1b02.png

基于我们之前的一些问题,我们建议老的版本尽快升级到3.0 .

62668834ce518898cd72d87b9be4a853.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1248818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AlDente Pro v1.22.2(mac电池最大充电限制工具)

AlDente Pro是一款适用于Mac操作系统的小工具,可以帮助您限制电池充电量以延长电池寿命。通常情况下,电池在充满的状态下会继续接受电源充电,这可能会导致电池寿命缩短。使用AlDente Pro,您可以设置电池只充到特定的充电水平&…

TYPE-C、PD原理

一、Type-C简介以及历史 自1998年以来,USB发布至今,USB已经走过20个年头有余了。在这20年间,USB-IF组织发布N种接口状态,包括A口、B口、MINI-A、MINI-B、Micro-A、Micro-B等等接口形态,由于各家产品的喜好不同&#x…

Azkaban极简使用文档

登录 地址: http://服务器ip:8081/, 用户名密码默认都是azkaban 构建项目流程 添加Project 编写工作流文件 在本机新建文件夹如test, 创建一个flow20.project 文件, 内容 azkaban-flow-version: 2.0(固定步骤)编写flow文件, 例如一个最基础的实例 test1.flow nodes:- name…

C语言剔除相关数(ZZULIOJ1204:剔除相关数)

题目描述 一个数与另一个数如果含有相同数字和个数的字符&#xff0c;则称两数相关。现有一堆乱七八糟的整数&#xff0c;里面可能充满了彼此相关的数&#xff0c;请你用一下手段&#xff0c;自动地将其剔除。 输入&#xff1a;多实例测试。每组数据包含一个n(n<1000)&#…

Pbootcms商城插件,支持购物车、订单、支付管理等

pbootcms商城插件上线&#xff0c;可以实现简单的商品管理、商品购买、加入购物车、购物车批量购买、以及后台的订单管理&#xff0c;发货管理、改价功能&#xff0c;支付信息管理等功能&#xff0c;满足商城基本功能后台效果截图&#xff1a; 前端效果截图&#xff1a; 演示网…

【Golang】解决使用interface{}解析json数字会变成科学计数法的问题

在使用解析json结构体的时候&#xff0c;使用interface{}接数字会发现变成了科学计数法格式的数字&#xff0c;不符合实际场景的使用要求。 举例代码如下&#xff1a; type JsonUnmStruct struct {Id interface{} json:"id"Name string json:"name"…

基于Vue+SpringBoot的天沐瑜伽馆管理系统

项目编号&#xff1a; S 039 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S039&#xff0c;文末获取源码。} 项目编号&#xff1a;S039&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课…

C语言—指针和数组

写在前 一个指针变量指向某个普通变量&#xff0c;则指针变量就等于普通变量。 指针变量存放的是地址&#xff0c;普通变量存放的是数据。 int * p; int i5,j; p &i;此程序&#xff0c;*pi5&#xff0c;在所有出现 *p 或 i 的位置&#xff0c;两者都可以互相替换。 通过…

无人机巡检如何做到实时识别,从数据到模型全流程解读

在数字化和自动化飞速发展的今天&#xff0c;AI识别算法正在加速进入行业生产系统。 基于巡检数据的智能开发&#xff0c;识别算法突破性进展的核心驱动力在于需求——从全天候巡视的平安城市&#xff0c;到潮汐变化的交通网络&#xff0c;从广阔的水域&#xff0c;到繁忙的街道…

【2023.11.23】JDBC基本连接语法学习➹

1.导入jar包依赖&#xff1a;mysql-connector-java-8.0.27.jar 2.连接数据库&#xff01; 3.无法解析类->导入java.sql.*&#xff0c;&#xff08;将项目方言改为Mysql&#xff09; JDBC&#xff0c;启动&#xff01;&#xff01; public class Main {public static voi…

c语言-浅谈指针(4)

文章目录 1.回调函数概念举例 2.qsort函数qsort的使用 3.通过冒泡排序来模拟qsort函数排序int类型排序结构体类型 这是指针最后一篇了喔&#xff0c;完结撒花 ! 前三篇&#xff1a; 浅谈指针&#xff08;1&#xff09;http://t.csdnimg.cn/JTRjW 浅谈指针&#xff08;2&#xf…

React项目中发生空白但不报错的原因分析和解决?

文章目录 前言组件渲染问题状态管理问题异步操作问题代码错误但未抛出异常如果我们使用的是chorme浏览器的话&#xff0c;可以下载一个开发者工具&#xff0c;例如下图&#xff1a;代码审查使用调试工具日志和输出检查外部依赖异步操作终极大法&#xff0c;不到万不得已不可以使…

问答知识库快速构建技术解析及行业实践

对话式 AI 类产品&#xff0c;已经在各行各业中实现规模化的应用。随着科技创新支撑下的高质量行业发展&#xff0c;人工智能已成为数字经济时代的核心生产力。其中对话式 AI&#xff0c;作为人工智能技术的一个分支&#xff0c;随着深度学习、预训练模型等技术的突破&#xff…

【数据结构/C++】线性表_单链表的基本操作

#include <iostream> using namespace std; // 2. 单链表 // ElemType 的定义 typedef int ElemType; typedef struct LNode {ElemType data;struct LNode *next; } LNode, *LinkList; // 初始化单链表 bool InitList(LinkList &L) {L (LNode *)malloc(sizeof(LNode…

Java自动装箱(autoboxing)和自动拆箱(autounboxing)介绍

Java自动装箱(autoboxing)和自动拆箱(autounboxing)介绍 先回顾一下 Java 中的基本数据类型和包装类。 基本数据类型&#xff08;Primitive Data Types&#xff09;&#xff1a; Java 提供了一组基本数据类型&#xff0c;有8种基本数据类型&#xff1a;byte、short、int、long…

【Spring】MyBatis的操作数据库

目录 一&#xff0c;准备工作 1.1 创建工程 1.2 准备数据 1.3 数据库连接字符串 1.4 创建持久层接口UserInfoMapper 1.5 单元测试 二&#xff0c;注解的基础操作 2.1 打印日志 2.2 参数传递 2.3 增&#xff08;Insert&#xff09; 2.4 删&#xff08;Delete&#x…

华为云之在Linux系统下安装可视化界面

华为云之在Linux系统下安装可视化界面 一、华为云弹性云服务器ECS介绍二、Linux图形化界面介绍三、本次实践介绍3.1 本次实践简介3.2 本次实践环境介绍 四、环境准备工作4.1 预置环境4.2 查看预置环境资源信息 五、连接弹性云服务器ECS5.1 登录华为云5.2 复制ECS弹性公网IP地址…

1|1111

1、指定在每天凌晨4&#xff1a;00将该时间点之前的系统日志信息&#xff08;/var/log/messages &#xff09;备份到目录下/backup&#xff0c;备份后日志文件名显示格式logfileYY-MM-DD-HH-MM 2、配置ssh免密登陆&#xff1a;客户端主机通过redhat用户基于秘钥验证方式进行远…

LED驱动控制专用电路

一、基本概述 TM1628是一种带键盘扫描接口的LED&#xff08;发光二极管显示器&#xff09;驱动控制专用IC,内部集成有MCU 数 字接口、数据锁存器、LED 驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调…

深入学习pytorch笔记

两个重要的函数 dir()&#xff1a; 一个内置函数&#xff0c;用于列出对象的所有属性和方法 help()&#xff1a;一个内置函数&#xff0c;用于获取关于Python对象、模块、函数、类等的详细信息 Dateset类 Dataset&#xff1a;pytorch中的一个类&#xff0c;开发者在训练和…