![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Patroni for Opengauss
文章平均质量分 55
Patroni相关研究和工作笔记
howard_shooter
交流微信:17625988619
展开
-
wal_log_hints为什么没有出现在postgresql.conf里?
但是为啥opengauss的gaussdb启动命令行里也没有wal_log_hints呢?还是源于get_server_parameters()里的逻辑,因为opengauss的major_version是90200,而只有90400以后,才允许wal_log_hints出现在命令行里。经过代码分析,发现patroni认为wal_log_hints应该在启动gaussdb时从命令行传进去,所以在get_server_parameters()里没有返回给需要生产postgresql.conf的代码。原创 2023-04-11 18:57:00 · 108 阅读 · 0 评论 -
Patroni for opengauss 1:使用Python3
在对Patroni的改造中,选择使用python3,我们使用的python3是随Patroni一起发布的,是我们自己编译的,包含了所需的所有模块,实际的使用经验证明,Python3运行Patroni是没有问题的,并且这种发布方案,更加易用。为了使Patroni可以管理OpenGauss、和满足公司的一些特定需求,我对Patroni的源码进行了一些改造,《Patroni源码修改》系列文章,用于记录修改的内容和背后的思考。文档中好像也没有说。需要将Patroni中可执行脚本的。......原创 2022-08-26 16:54:50 · 309 阅读 · 0 评论 -
Patroni for opengauss 2:controlfile对生成postgresql.conf参数的影响
例如max_connections,如果controlfile中存储的(例如200)比patroni.yml或者etcd中存储的(例如100),则生成的postgresql.conf使用controlfile的200。patroni生成postgresql.conf文件时,不仅仅根据patroni.yml和etcd中全局参数生成,还会根据controlfile中的参数(有些参数存储在controlfile中)生成。参考def effective_configuration()函数。............原创 2022-08-19 10:47:04 · 245 阅读 · 0 评论 -
Patroni for opengauss 3:浮动IP
当本节的role为master时,设置本节的为可读写的浮动IP,当本节的role为replica时,设置本节的为只读浮动IP,当查询失败时(例如Patroni退出了)禁用这两种浮动IP地址。功能需求:这是一个可选功能,三节点的Patroni、PostgreSQL/Opengauss集群,当主备自动切换时,主节点要设置可读写的浮动IP,备节点要设置只读的浮动IP(也可以不设置)。程序只有一个主线程,以一个循环作为主体,接受patroni.yml作为配置文件,对这个程序的配置参数写在这个文件中。........原创 2022-08-29 15:04:37 · 639 阅读 · 0 评论 -
Patroni for opengauss 4:REST API获取Opengauss状态
注意:Opengaus返回的postmaster_start_time是字符串格式为:"2022-08-26 15:33:01.932975+08",只能用dateutil.parser.parse()转换,不能用datetime.strptime(),这个函数需要的字符串格式为:"2022-08-26 15:33:01.932975+08:00"。但是原生版本的Patroni对接Opengauss时,原来查询PG的SQL,无论在列名还是返回值的格式上都不同了,必须做修改。...原创 2022-08-29 16:28:05 · 179 阅读 · 0 评论 -
Patroni for opengauss 5:记录主备切换历史
在patroni/ha.py中替换掉enforce_master_role()对update_cluster_history()的调用,改为调用update_promote_history(),update_promote_history()就是我实现,保存当前主节点信息的函数。这里需求就是,Patroni管理的Opengauss集群,当某个节点从备机切换到主机时,会向etcd的history键的值中增加一条记录,记录内容包括切换为主机的node名称、时间、和表示切换的消息。.........原创 2022-08-29 17:07:50 · 495 阅读 · 0 评论 -
Patroni for openguass 6:postgresql.conf 参数的校验
Patroni生成postgresql.conf中的参数时,不是简单地将patroni.yml里postgresql下的参数直接转为postgresql.conf里的参数的,而是会做一下校验,校验参数是否存在、范围,对于Opengauss这其实带来一些麻烦。原创 2022-08-30 15:35:48 · 218 阅读 · 0 评论 -
Patroni for opengauss 7:Patroni对Opengauss的控制
原生Patroni是通过pg_ctl、postgres等命令控制Postgresql,但是在Opengauss中,这些命令的程序名、参数发生了一些改变,之前调用Postgresql的代码,不做修改用在Openguass上会出错,必须做一些适配。原创 2022-09-01 15:53:40 · 267 阅读 · 0 评论 -
Patroin for opengauss 8:初始化opengauss
3、除了上面三个文件,PG还会生成recovery.conf,但是OG配置主从,并不需要创建recovery.conf 和 standby.signal,也不需要在postgresql.conf里生成参数primary_conninfo。这个超级用户的用户名和密码在patroni.yml的postgresql.authentication.superuser 中定义,2、生成postgresql.conf、pg_hba.conf、pg_ident.conf。...原创 2022-09-01 17:28:38 · 411 阅读 · 0 评论 -
Patroni for opengauss 9:basebackup
修改传给gs_basebackup的参数,调用basebackup,调用成功后标记basebackup已经执行了。用属性basebackup_executed标记basebackup是否成功执行了,这个属性在rewind时会用到。增加setdbpassword函数,用于接收--no-password传来的密码参数。实际调用gs_basebackup的代码,调用前创建数据目录。用--no-password或-w传入密码。原创 2022-09-02 11:44:36 · 258 阅读 · 0 评论 -
Patroni for opengauss 10:rewind
在对Patroni的修改中,原pg_rewind的相关逻辑不再被调用,根据代码可知,只要在patroni.yml中设置use_pg_rewind为false,就能禁用Patroni中pg_rewind所有相关逻辑,而且OG也没有pg_rewind可执行程序,这也是禁用的充分条件。源码中PG对pg_rewind的逻辑显然比这里更复杂一些,也能处理更多的情况,它启动另一个线程执行rewind,并且根据rewind的执行结果改变状态变量。原创 2022-09-02 17:17:36 · 382 阅读 · 0 评论 -
Patroni for opengauss 11:Patroni监控opengauss的心跳
Patroni的每次循环都会执行用TL_LSN生成的SQL,查询PG/OG的基本信息,也是Patroni的和PG/OG的心跳。如果到PG/OG的连接出错,就会尝试再次拉起PG/OG。尝试拉起PG/OG。原创 2022-09-05 12:02:05 · 235 阅读 · 0 评论 -
Patroni for opengauss 12:pick_synchronous_standby
虽然pick_synchronous_standby这个函数不经常调用,但是其中的SQL查询Opengauss时也会出错,因为OG的pg_catalog.pg_stat_replication与PG的列名不同了。原创 2022-09-05 15:07:53 · 181 阅读 · 0 评论