本篇文章為大家展示了PostgreSQL 高可用Patroni和學(xué)習(xí)方法是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司是專業(yè)的鐵力網(wǎng)站建設(shè)公司,鐵力接單;提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鐵力網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
最近一段時(shí)間在學(xué)習(xí) POSTGRESQL 的高可用,相關(guān)的方法很多,但是坑也很多,在PGPOOL-II上摔不了少跤,同時(shí)在學(xué)習(xí)期間發(fā)現(xiàn)一個(gè)問題就是,很多時(shí)候?qū)W習(xí)知識(shí)并沒有求慎解,并且網(wǎng)上很多帖子都是安裝完畢就OK 了,如果你安裝去做的話,其實(shí)很多時(shí)候是安裝不成功或問題無法解決。
本著換一種方式學(xué)習(xí)的,不浪費(fèi)時(shí)間在一些應(yīng)該知道,但從網(wǎng)上劃拉帖子就做,然后一頭霧水的學(xué)習(xí)方法,改換為,踏踏實(shí)實(shí)的來做一次相關(guān)的知識(shí)的梳理和層次化的學(xué)習(xí)。
本次學(xué)習(xí)的是 postgresql 的高可用方式 Patroni
Patroni 本身并不是一個(gè)軟件,而是一個(gè)模板通過python來構(gòu)建一個(gè)高可用的postgresql的解決方案。軟件本身可以通過其他的分布式軟件來進(jìn)行支持( zookeeper, etcd 等),同時(shí)根據(jù)你選擇的不同的模塊來安裝patroni.
Patroni 本身使用的數(shù)據(jù)同步方式是postgresql的流復(fù)制方式,默認(rèn)的情況我們還是使用異步的方式,在Patroni 中會(huì)有一個(gè)參數(shù),
Maximum_lag_on_failover ,通過設(shè)置,保證從庫在與主庫超過一定數(shù)據(jù)不同步的情況下,不會(huì)發(fā)生相關(guān)的主從轉(zhuǎn)移。
在patroni 的設(shè)置中,有三種方式,1 動(dòng)態(tài)設(shè)置, 2 本地設(shè)置 3 環(huán)境設(shè)置,其中有一些設(shè)置在主庫和從庫之間必須保持一致,這些值在本地中的配置文件是不生效的。
以下值必須在動(dòng)態(tài)設(shè)置中保存并設(shè)置
max_connections:
max_locks_per_transaction:
max_worker_processes:
max_prepared_transactions
wal_level:hot_standby
wal_log_hints: on
track_commit_timestamp: off
并且還有一些值也是需要大致相同的,主要原因是主從可能發(fā)生切換,而如果在切換后,新主的機(jī)器不能調(diào)整好自身的狀態(tài),則會(huì)影響正常的數(shù)據(jù)庫使用。
max_wal_sender
max_replicaiton_slots:
wal_keep_segments:
同時(shí),
listen_address
port
cluster_name
host_standby
等參數(shù)是通過動(dòng)態(tài)的方式傳遞給 pt_ctl (pt_ctl 是patroni的啟動(dòng)程序)
并且這些參數(shù)的傳遞要高于 alter system 的設(shè)置。
具體,patroni 是怎么做的,又是怎么樣的次序來進(jìn)行配置的讀取
1 節(jié)點(diǎn)首先檢查 是否有 postgresql.base.conf (一般默認(rèn)在安裝后的postgresql 的數(shù)據(jù)目錄)或者設(shè)置了 custom_conf
2 如果custom_conf 設(shè)置了相同的參數(shù),則以custom_conf 為主,其他的配置將被忽略
3 如果custom_conf 沒有設(shè)置,則以postgresql.base.conf為主,如果還不存在,則將postgresql.conf 變更為postgresql.base.conf
4 動(dòng)態(tài)的選擇項(xiàng),將可以不使用重新讀取的方式生效,而是編寫應(yīng)用后就生效。
總結(jié):參數(shù)文件被應(yīng)用的順序
1 postgresql.base.conf
2 postgresql.conf
3 postgresql.auto.conf
4 run-time parameter
而動(dòng)態(tài)的文件中的修改,DCS的配置改變都會(huì)將相關(guān)的配置保存在 patroni.dynamic的磁盤文件中。
而Patroni 使用的是 YAML的方式來進(jìn)行配置的,所以這也就要求,配置文件的嚴(yán)謹(jǐn)性,例如多一個(gè)空格,少一個(gè)縮進(jìn),都是不可以的。
配置文件的項(xiàng)目很多,這里值關(guān)心 global 和 etcd的配置
1 Global 設(shè)置
name 集群名集群內(nèi)的機(jī)器必須唯一,每臺(tái)機(jī)器有自己的名字
namespace 存儲(chǔ)配置信息的區(qū)域路徑(請保持默認(rèn))
scope 集群的名字
2 log 的配置
level 設(shè)置日志的等級
format 設(shè)置日志的等級 默認(rèn)的設(shè)置是 asctime levelname message
dateformat 設(shè)置時(shí)間格式
dir 要寫入程序日志的目錄,目錄必須存在并且是patroni 用戶編寫并且可以由您設(shè)置此值。應(yīng)用程序?qū)⒛J(rèn)保留4個(gè)25MB 的日志。
file_num 要保留的日志的數(shù)量
file_size patroni.log的尺寸
loggers: 定義允許日志等級
引導(dǎo)配置:
DCS: 在集群的全局配置,更改參數(shù)需要在 DCS 中或聽過API 進(jìn)行更改。
loop_wait 循環(huán)休眠的描述 默認(rèn) 10秒
ttl: TTL獲取先導(dǎo)鎖。可以將其視為啟動(dòng)自動(dòng)故障轉(zhuǎn)移過程之前的時(shí)間長度。默認(rèn)值:30
retry_timeout: 分布式程序和POSTGRESQL 之間的失聯(lián)后多長時(shí)間不觸發(fā)切換。
maximum_lag_on_failover:從庫和主庫之間在可以能進(jìn)行主從切換中運(yùn)行的字節(jié)差距。
master_start_timeout 主庫在故障轉(zhuǎn)移中的時(shí)間容忍度,loop_wait + master_start_timeout+loop_wait
synchronous_mode 打開這個(gè)模式將選擇與主庫最接近的從庫作為可的新主庫
synchronous_mode_strict :打開這個(gè)模式將如果發(fā)現(xiàn)沒有和主庫進(jìn)行數(shù)據(jù)復(fù)制的從庫,則主庫將禁止寫入數(shù)據(jù)。
上述內(nèi)容就是PostgreSQL 高可用Patroni和學(xué)習(xí)方法是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享名稱:PostgreSQL高可用Patroni和學(xué)習(xí)方法是什么
本文來源:http://jinyejixie.com/article20/pgeeco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、定制網(wǎng)站、虛擬主機(jī)、網(wǎng)站營銷、網(wǎng)站建設(shè)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)