温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PostgreSQL 高可用Patroni和学习方法是什么

发布时间:2022-01-04 18:06:49 来源:亿速云 阅读:178 作者:柒染 栏目:大数据

本篇文章为大家展示了PostgreSQL 高可用Patroni和学习方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

最近一段时间在学习 POSTGRESQL 的高可用,相关的方法很多,但是坑也很多,在PGPOOL-II上摔不了少跤,同时在学习期间发现一个问题就是,很多时候学习知识并没有求慎解,并且网上很多帖子都是安装完毕就OK 了,如果你安装去做的话,其实很多时候是安装不成功或问题无法解决。

本着换一种方式学习的,不浪费时间在一些应该知道,但从网上划拉帖子就做,然后一头雾水的学习方法,改换为,踏踏实实的来做一次相关的知识的梳理和层次化的学习。

本次学习的是 postgresql  的高可用方式  Patroni

Patroni 本身并不是一个软件,而是一个模板通过python来构建一个高可用的postgresql的解决方案。软件本身可以通过其他的分布式软件来进行支持( zookeeper, etcd  等),同时根据你选择的不同的模块来安装patroni.

Patroni  本身使用的数据同步方式是postgresql的流复制方式,默认的情况我们还是使用异步的方式,在Patroni 中会有一个参数,

Maximum_lag_on_failover  ,通过设置,保证从库在与主库超过一定数据不同步的情况下,不会发生相关的主从转移。

在patroni 的设置中,有三种方式,1 动态设置, 2 本地设置  3 环境设置,其中有一些设置在主库和从库之间必须保持一致,这些值在本地中的配置文件是不生效的。

以下值必须在动态设置中保存并设置

 max_connections: 

 max_locks_per_transaction:

max_worker_processes:

max_prepared_transactions

wal_level:hot_standby

wal_log_hints: on

track_commit_timestamp: off

并且还有一些值也是需要大致相同的,主要原因是主从可能发生切换,而如果在切换后,新主的机器不能调整好自身的状态,则会影响正常的数据库使用。

max_wal_sender

max_replicaiton_slots:

wal_keep_segments:

同时,

listen_address

port

cluster_name

host_standby

 等参数是通过动态的方式传递给 pt_ctl (pt_ctl  是patroni的启动程序)

并且这些参数的传递要高于 alter system 的设置。

具体,patroni 是怎么做的,又是怎么样的次序来进行配置的读取

1  节点首先检查 是否有 postgresql.base.conf (一般默认在安装后的postgresql 的数据目录)或者设置了 custom_conf

2 如果custom_conf 设置了相同的参数,则以custom_conf  为主,其他的配置将被忽略

3 如果custom_conf 没有设置,则以postgresql.base.conf为主,如果还不存在,则将postgresql.conf 变更为postgresql.base.conf

4 动态的选择项,将可以不使用重新读取的方式生效,而是编写应用后就生效。

总结:参数文件被应用的顺序

1 postgresql.base.conf

2 postgresql.conf

3 postgresql.auto.conf

4 run-time parameter

而动态的文件中的修改,DCS的配置改变都会将相关的配置保存在 patroni.dynamic的磁盘文件中。

而Patroni 使用的是 YAML的方式来进行配置的,所以这也就要求,配置文件的严谨性,例如多一个空格,少一个缩进,都是不可以的。

配置文件的项目很多,这里值关心 global 和 etcd的配置

1 Global 设置

name 集群名集群内的机器必须唯一,每台机器有自己的名字

namespace  存储配置信息的区域路径(请保持默认)

scope 集群的名字

2 log 的配置

level  设置日志的等级

format  设置日志的等级 默认的设置是 asctime  levelname message

dateformat  设置时间格式

dir 要写入程序日志的目录,目录必须存在并且是patroni 用户编写并且可以由您设置此值。应用程序将默认保留4个25MB 的日志。

file_num 要保留的日志的数量

 file_size  patroni.log的尺寸

loggers: 定义允许日志等级

引导配置:

DCS: 在集群的全局配置,更改参数需要在 DCS 中或听过API 进行更改。

loop_wait  循环休眠的描述 默认 10秒

ttl: TTL获取先导锁。可以将其视为启动自动故障转移过程之前的时间长度。默认值:30

retry_timeout: 分布式程序和POSTGRESQL 之间的失联后多长时间不触发切换。

maximum_lag_on_failover:从库和主库之间在可以能进行主从切换中运行的字节差距。

master_start_timeout 主库在故障转移中的时间容忍度,loop_wait + master_start_timeout+loop_wait

synchronous_mode 打开这个模式将选择与主库最接近的从库作为可的新主库

synchronous_mode_strict :打开这个模式将如果发现没有和主库进行数据复制的从库,则主库将禁止写入数据。

上述内容就是PostgreSQL 高可用Patroni和学习方法是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI