您好,登錄后才能下訂單哦!
本篇文章為大家展示了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和學習方法是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。