PostgreSQL pg_standby

2021-09-17 10:11 更新

pg_standby用于支持創(chuàng)建一個(gè)溫備數(shù)據(jù)庫(kù)服務(wù)器。它被設(shè)計(jì)為一個(gè)可以隨時(shí)投入生產(chǎn)的程序,以及一個(gè)可定制的模板供你進(jìn)行特定的修改。

pg_standby被設(shè)計(jì)成一個(gè)等待著的restore_command,它被用來把一次標(biāo)準(zhǔn)的歸檔恢復(fù)變成一次溫備操作。還需要一些其他的配置,所有這些配置都在主服務(wù)器手冊(cè)中有相應(yīng)的描述(見第 26.2 節(jié))。

要配置一臺(tái)后備服務(wù)器去使用pg_standby,可以把下面的內(nèi)容放在postgresql.conf配置文件中:

restore_command = 'pg_standby archiveDir %f %p %r'

其中archiveDir是 WAL 段文件應(yīng)該被存儲(chǔ)的目錄。

如果指定了restartwalfile(通常用%r宏指定),那么所有在邏輯上位于這個(gè)文件之前的 WAL 文件都將被從archivelocation中移除。這使需要被保留的文件數(shù)最小化,與此同時(shí)能夠保持崩潰重啟的能力。如果archivelocation對(duì)于這個(gè)特定后備服務(wù)器是一個(gè)瞬態(tài)區(qū)域,使用這個(gè)參數(shù)是合適的,但當(dāng) archivelocation 是一個(gè)長(zhǎng)期 WAL 歸檔區(qū)域時(shí)則不是合適的。

pg_standby假定archivelocation是一個(gè)擁有服務(wù)器的用戶可讀的目錄。如果指定了restartwalfile(或者-k),archivelocation目錄必須也是可寫的。

當(dāng)主服務(wù)器失效時(shí),有兩種方式轉(zhuǎn)移到一個(gè)溫備數(shù)據(jù)庫(kù)服務(wù)器:

智能失效備援

在智能失效備援中,服務(wù)器在應(yīng)用歸檔中可用的所有 WAL 文件之后被提升。即便后備服務(wù)器落后于主服務(wù)器,這也會(huì)導(dǎo)致零數(shù)據(jù)丟失,但是如果有很多未應(yīng)用的 WAL,在后備服務(wù)器準(zhǔn)備好之前就需要比較長(zhǎng)的時(shí)間。要觸發(fā)一次智能失效備援,創(chuàng)建一個(gè)包含單詞smart的觸發(fā)文件,或者只創(chuàng)建一個(gè)空文件。

快速失效備援

在快速失效備援中,服務(wù)器被立即提升。歸檔中任何還未被應(yīng)用的 WAL 文件將被忽略,并且這些文件中的所有事務(wù)都會(huì)丟失。要觸發(fā)一次快速失效備援,創(chuàng)建一個(gè)觸發(fā)文件并且把單詞fast寫在其中。pg_standby也能被配置為在一段定義好的區(qū)間內(nèi)沒有新 WAL 文件出現(xiàn)時(shí)自動(dòng)執(zhí)行一次快速失效備援。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)