真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Postgresql中PG_REWIND有什么用

這篇文章主要介紹了Postgresql中PG_REWIND有什么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、珠海網(wǎng)站維護(hù)、網(wǎng)站推廣。

PostgreSQL 在操作的過(guò)程中,如果利用物理復(fù)制的過(guò)程中,另一臺(tái)從庫(kù),或者主庫(kù)由于某些原因,不再與主庫(kù)同步,或者主庫(kù)crash 起不來(lái)了,怎么辦,如果在利用現(xiàn)在的主庫(kù)或備庫(kù),弄出一個(gè) twins 。 

其實(shí)PG 早就想到這個(gè)問(wèn)題了,PG有一個(gè)獨(dú)特的命令 pg_rewind 可以幫助你,再造一個(gè)你。

我們看看pg_rewind能幫我們什么

pg_rewind 的工作原理有點(diǎn)類似rsync,它可以無(wú)縫的讀取源目錄與目的目錄之間不同的數(shù)據(jù)塊,而重復(fù)的數(shù)據(jù)塊將不再被讀取。這樣的方式其實(shí)對(duì)于上面的問(wèn)題是一個(gè)好的解決方案,因?yàn)槿绻鲝膹?fù)制,任何一方壞了,使用PG_REWIND 可以快速將你認(rèn)為的數(shù)據(jù)完全的一方的數(shù)據(jù)同步到另一方,而不用做全量復(fù)制,這樣最大的好處就是節(jié)省了時(shí)間。

當(dāng)然如果大概率知道checksum的(包括MySQL的binlog checksum )大多可以想到,怎么知道這兩邊的數(shù)據(jù)是否一致,必須的校驗(yàn)塊,postgresql 如果要使用pg_rewind 功能需要你做以下的一些設(shè)置

1  full_page_writes = on

2  wal_log_hints = on

3   hot_standby = on

4  如果你在初始化數(shù)據(jù)庫(kù)集群(postgresql 單機(jī)也叫數(shù)據(jù)庫(kù)集群,別和真正的集群的含義搞混)做了data checksum 也是可以的。  

其主要的工作原理,在目的集群中對(duì)比源,與目的端之間的不同點(diǎn),就是什么時(shí)候兩個(gè)服務(wù)器之間的數(shù)據(jù)開始不同步的。通過(guò)知道這些不同點(diǎn)開始進(jìn)行

1  使用文件系統(tǒng)的方式進(jìn)行拷貝

2 使用libpq 建立連接的方式將數(shù)據(jù)進(jìn)行拷貝

在拷貝數(shù)據(jù)文件的以外還需要拷貝事務(wù)提交的文件,pg_xact 以及配置文件等等。生成backup label 文件,并且指定開始要恢復(fù)的 wal 日志點(diǎn),并應(yīng)用恢復(fù)點(diǎn)以后的日志,并且還要刷新 pg_control 文件(在設(shè)置了檢查點(diǎn)并刷新日志之后,檢查點(diǎn)的位置將保存在文件pg_control中),最后執(zhí)行initdb -S 將數(shù)據(jù)刷入到磁盤后,關(guān)閉。

問(wèn)題1 ,PG_REWIND 怎么識(shí)別兩臺(tái)PG 是曾經(jīng)為primary 和 standby的管理

其實(shí)就是通過(guò) database system identifier 來(lái)鑒別,同樣的主從的 database system identifier 的編碼是一致的。同時(shí)也要看version 與 catalog version number 是否一致。

Postgresql中PG_REWIND有什么用

而關(guān)于bakcup label 其中包含了check point ,而后續(xù)的復(fù)制也是要依靠這個(gè)check point 點(diǎn) 目的集群就可以不斷應(yīng)用源集群從CHECKPOINT LOCATION 之后的WAL 日志。

當(dāng)然其中的原理不光如此,下面就開始做一個(gè)實(shí)驗(yàn)看看pg_rewind的強(qiáng)大的功能。

首先下面有兩臺(tái)PG , 192.168.198.120 主庫(kù)  192.168.198.176 從庫(kù)

通過(guò)pg_basebackup 進(jìn)行數(shù)據(jù)同步后,在 192.168.198.120 上在進(jìn)行相關(guān)的一些建庫(kù),曾表,插入數(shù)據(jù)的事情,看看PG_REWIND 是否可以進(jìn)行相關(guān)的數(shù)據(jù)同步

pg_basebackup 命令就不在講了,默認(rèn)大家都會(huì)了,不會(huì)的可以百度,或者看我之前的關(guān)于這方面的東西。

1 下面的兩個(gè)服務(wù)器的數(shù)據(jù)已經(jīng)是一致的,通過(guò)pg_basebackup 進(jìn)行的復(fù)制

Postgresql中PG_REWIND有什么用

2  對(duì)176 進(jìn)行promote 操作,模擬主庫(kù)失效,從庫(kù)接替主庫(kù),此時(shí)主庫(kù)和從庫(kù)之間不再有任何關(guān)系 (需要修改176 的 postgresql 的監(jiān)聽地址,這點(diǎn)是基礎(chǔ)就不再提了)

Postgresql中PG_REWIND有什么用

4  我們?cè)?76上進(jìn)行創(chuàng)建一個(gè)pg_rewind庫(kù)的操作,此時(shí) 兩個(gè)庫(kù)已經(jīng)數(shù)據(jù)不一致了

Postgresql中PG_REWIND有什么用

最后在120 上執(zhí)行 

 pg_rewind --target-pgdata=/pgdata/data  --source-server='host=192.168.198.176 port=5432 user=repl dbname=postgres password=repl' -P --debug

Postgresql中PG_REWIND有什么用

將數(shù)據(jù)追齊后,修改120 的配置文件,模擬失效的主庫(kù)和已經(jīng)提升為主庫(kù)的“從庫(kù)” 數(shù)據(jù)已經(jīng)一致了

Postgresql中PG_REWIND有什么用

Postgresql中PG_REWIND有什么用

到這里本來(lái)就完事了,但實(shí)際上有些評(píng)論說(shuō)pg_rewind 是可以做數(shù)據(jù)同步的,我是比較感興趣的,到底 pg_rewind 可不可以做數(shù)據(jù)同步。

首先我們要確認(rèn)幾點(diǎn),在達(dá)到共識(shí)的基礎(chǔ)上才能繼續(xù)下面的工作

1 即使是數(shù)據(jù)同步,也必須是在之前兩個(gè)節(jié)點(diǎn)之間的關(guān)系是主從關(guān)系,或者至少是有關(guān)系,如果兩個(gè)節(jié)點(diǎn)之間沒(méi)有任何關(guān)系,則這個(gè)工作是沒(méi)有辦法做的。

2 數(shù)據(jù)同步是否需要 promote 操作作為前提,或者直接去修改 recovery.conf 文件

測(cè)試1 :

進(jìn)行數(shù)據(jù)同步,然后將從庫(kù)關(guān)閉,將recover.conf 變?yōu)?recover.done,然后重啟動(dòng)從庫(kù),在關(guān)閉,變更主庫(kù)的數(shù)據(jù),使用pg_rewind進(jìn)行數(shù)據(jù)同步

結(jié)果失敗,通過(guò)失敗可以證明,如果主從失敗后,想直接通過(guò)提升當(dāng)前從庫(kù)的方法,在通過(guò) pg_rewind 進(jìn)行數(shù)據(jù)同步的想法可以涼快去了

Postgresql中PG_REWIND有什么用

測(cè)試2  同步長(zhǎng)時(shí)間的主庫(kù)已經(jīng)和原來(lái)的從庫(kù)(從庫(kù)已經(jīng)提升為主庫(kù))的數(shù)據(jù)是否可行,這里的長(zhǎng)時(shí)間其實(shí)也是看數(shù)據(jù)量,下面的情況就是報(bào)找不到pg_wal  文件,這邊可以嘗試從原來(lái)的從庫(kù)上拷貝缺少的pg_wal 或者開啟 archive 等方式保證你的pg_wal 是充足的。

Postgresql中PG_REWIND有什么用

圖中源主庫(kù)報(bào)沒(méi)有00000004000000000000003F 文件,找到原來(lái)的從庫(kù),現(xiàn)在的主庫(kù)將這個(gè)文件拷貝到原來(lái)的主庫(kù),則pg_rewind 正常工作。

Postgresql中PG_REWIND有什么用

 所以相關(guān)的pg_wal 文件也要留存好,最好是有archive 來(lái)做數(shù)據(jù)恢復(fù)的后盾。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Postgresql中PG_REWIND有什么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


本文名稱:Postgresql中PG_REWIND有什么用
文章起源:http://weahome.cn/article/jsoigi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部