濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > CentOS PostgreSQL 12 主從復(fù)制(主從切換)操作

CentOS PostgreSQL 12 主從復(fù)制(主從切換)操作

熱門標(biāo)簽:地圖標(biāo)注要花多少錢 電銷機(jī)器人能補(bǔ)救房產(chǎn)中介嗎 濟(jì)南外呼網(wǎng)絡(luò)電話線路 天津開發(fā)區(qū)地圖標(biāo)注app 江蘇400電話辦理官方 電話機(jī)器人怎么換人工座席 廣州電銷機(jī)器人公司招聘 400電話申請(qǐng)客服 移動(dòng)外呼系統(tǒng)模擬題

主從復(fù)制

1. 基于文件的日志傳送

創(chuàng)建一個(gè)高可用性(HA)集群配置可采用連續(xù)歸檔,集群中主服務(wù)器工作在連續(xù)歸檔模式下,備服務(wù)器工作在連續(xù)恢復(fù)模式下(1臺(tái)或多臺(tái)可隨時(shí)接管主服務(wù)器),備持續(xù)從主服務(wù)器讀取WAL文件。

連續(xù)歸檔不需要對(duì)數(shù)據(jù)庫表做任何改動(dòng),可有效降低管理開銷,對(duì)主服務(wù)器的性能影響也相對(duì)較低。

直接從一個(gè)數(shù)據(jù)庫服務(wù)器移動(dòng)WAL記錄到另一臺(tái)服務(wù)器被稱為日志傳送,PostgreSQL通過一次一文件(WAL段)的WAL記錄傳輸實(shí)現(xiàn)了基于文件的日志傳送。

日志傳送所需的帶寬取根據(jù)主服務(wù)器的事務(wù)率而變化;

日志傳送是異步的,即WAL記錄是在事務(wù)提交后才被傳送,那么在一個(gè)窗口期內(nèi)如果主服務(wù)器發(fā)生災(zāi)難性的失效則會(huì)導(dǎo)致數(shù)據(jù)丟失,還沒有被傳送的事務(wù)將會(huì)被丟失;

數(shù)據(jù)丟失窗口可以通過使用參數(shù)archive_timeout進(jìn)行限制,可以低至數(shù)秒,但同時(shí)會(huì)增加文件傳送所需的帶寬。

2. 流復(fù)制

PostgreSQL在9.x之后引入了主從的流復(fù)制機(jī)制,所謂流復(fù)制,就是備服務(wù)器通過tcp流從主服務(wù)器中同步相應(yīng)的數(shù)據(jù),主服務(wù)器在WAL記錄產(chǎn)生時(shí)即將它們以流式傳送給備服務(wù)器,而不必等到WAL文件被填充。

默認(rèn)情況下流復(fù)制是異步的,這種情況下主服務(wù)器上提交一個(gè)事務(wù)與該變化在備服務(wù)器上變得可見之間客觀上存在短暫的延遲,但這種延遲相比基于文件的日志傳送方式依然要小得多,在備服務(wù)器的能力滿足負(fù)載的前提下延遲通常低于一秒;

在流復(fù)制中,備服務(wù)器比使用基于文件的日志傳送具有更小的數(shù)據(jù)丟失窗口,不需要采用archive_timeout來縮減數(shù)據(jù)丟失窗口;

將一個(gè)備服務(wù)器從基于文件日志傳送轉(zhuǎn)變成基于流復(fù)制的步驟是:把recovery.conf文件中的primary_conninfo設(shè)置指向主服務(wù)器;設(shè)置主服務(wù)器配置文件的listen_addresses參數(shù)與認(rèn)證文件即可。

操作系統(tǒng): CentOS 7

數(shù)據(jù)庫: PostgreSQL 12

一、主庫配置

1、創(chuàng)建具有流復(fù)制權(quán)限的用戶

CREATE ROLE replica login replication encrypted password 'replica的密碼';

2、編輯pg_hba.conf

# 新增或修改下列屬性設(shè)置
# 監(jiān)聽所有IP
listen_addresses = '*' 
# 開啟歸檔
archive_mode = on 
#歸檔命令
archive_command = 'test ! -f /var/lib/pgsql/12/data/pg_archive/%f  cp %p /var/lib/pgsql/12/data//pg_archive/%f'
# 9.6開始沒有hot_standby(熱備模式)
wal_level = replica
#最多有2個(gè)流復(fù)制連接
max_wal_senders = 2 
wal_keep_segments = 16 
#流復(fù)制超時(shí)時(shí)間
wal_sender_timeout = 60s
# 最大連接數(shù),據(jù)說從機(jī)需要大于或等于該值
max_connections = 100

3、重啟postgres

pg_ctl -D /var/lib/pgsql/12/data -l logfile restart

二、從庫配置

1、驗(yàn)證在從庫是否可以訪問主節(jié)點(diǎn)

psql -h 10.20.2.195 -U postgres

2、停止從庫postgres服務(wù)

pg_ctl -D /var/lib/pgsql/12/data -l logfile stop

3、清空從庫數(shù)據(jù)存儲(chǔ)文件夾

rm -rf /var/lib/pgsql/12/data/*

4、從主服務(wù)器上copy數(shù)據(jù)到從服務(wù)器,這一步叫做“基礎(chǔ)備份”

pg_basebackup -h 主節(jié)點(diǎn)IP -p 5432 -U replica -Fp -Xs -Pv -R -D /var/lib/pgsql/12/data

5、此時(shí)data目錄下會(huì)出現(xiàn)standby.signal文件,編輯此文件

## 加入
standby_mode = 'on'

6、修改postgresql.conf文件

#從機(jī)信息和連接用戶
primary_conninfo = 'host=主節(jié)點(diǎn)IP port=5432 user=replica password=replica用戶的密碼'
#說明恢復(fù)到最新狀態(tài)
recovery_target_timeline = latest 
#大于主節(jié)點(diǎn),正式環(huán)境應(yīng)當(dāng)重新考慮此值的大小
max_connections = 120 
#說明這臺(tái)機(jī)器不僅用于數(shù)據(jù)歸檔,還可以用于數(shù)據(jù)查詢
hot_standby = on
#流備份的最大延遲時(shí)間
max_standby_streaming_delay = 30s 
#向主機(jī)匯報(bào)本機(jī)狀態(tài)的間隔時(shí)間
wal_receiver_status_interval = 10s 
#r出現(xiàn)錯(cuò)誤復(fù)制,向主機(jī)反饋
hot_standby_feedback = on

7、重啟從庫

pg_ctl -D /var/lib/pgsql/12/data -l logfile start

三、驗(yàn)證主從搭建是否成功

1、連接主庫執(zhí)行

select client_addr,sync_state from pg_stat_replication;

說明從服務(wù)器正在接收流,而且是異步流復(fù)制。主從配置成功

四、主從切換

主數(shù)據(jù)庫是讀寫的,備數(shù)據(jù)庫是只讀的。當(dāng)主數(shù)據(jù)庫宕機(jī)了,可以通過pg_controldata命令將從庫提升為主庫(將只讀模式變成讀寫),實(shí)現(xiàn)一些基本的HA應(yīng)用。也可以通過建立觸發(fā)文件提升為主庫,不推薦。命令快捷不容易出錯(cuò)。

1、查看/var/lib/pgsql/12/data復(fù)制狀態(tài)

主庫

從庫

2、主庫故障,停止主庫服務(wù)

3、提升從庫為主庫

su - postgres -c "pg_ctl promote"
server promoting

4、查看從庫日志

cat /var/lib/pgsql/912/data/pg_log/postgresql-Mon.log

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL 慢查詢SQL跟蹤操作
  • PostgreSQL 查看表的主外鍵等約束關(guān)系詳解
  • PostgreSQL 修改視圖的操作
  • PostgreSQL 更新視圖腳本的注意事項(xiàng)說明
  • postgreSQL中的row_number() 與distinct用法說明
  • Postgresql 動(dòng)態(tài)統(tǒng)計(jì)某一列的某一值出現(xiàn)的次數(shù)實(shí)例
  • postgresql 計(jì)算兩點(diǎn)距離的2種方法小結(jié)
  • 淺談pg_hint_plan定制執(zhí)行計(jì)劃

標(biāo)簽:辛集 溫州 杭州 海西 濮陽 寶雞 榆林 昭通

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《CentOS PostgreSQL 12 主從復(fù)制(主從切換)操作》,本文關(guān)鍵詞  CentOS,PostgreSQL,主從,復(fù)制,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《CentOS PostgreSQL 12 主從復(fù)制(主從切換)操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于CentOS PostgreSQL 12 主從復(fù)制(主從切換)操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    墨竹工卡县| 内乡县| 高台县| 隆德县| 家居| 博野县| 甘洛县| 荔浦县| 建瓯市| 迁安市| 峨眉山市| 桑植县| 四子王旗| 申扎县| 万荣县| 云霄县| 肥城市| 于都县| 夹江县| 伊春市| 镇平县| 达拉特旗| 滕州市| 桂林市| 婺源县| 临邑县| 庆元县| 邹平县| 祁门县| 海盐县| 崇礼县| 盐源县| 安远县| 宜兰县| 蒙山县| 余干县| 泽普县| 射阳县| 武夷山市| SHOW| 大宁县|