?
? ????? PHP ??? ???? ??? ?? ??
檢索WAL文件中已歸檔段的SHELL命令。對(duì)歸檔恢復(fù)來(lái)說(shuō)這個(gè)參數(shù)是必須的,但對(duì)流復(fù)制來(lái)說(shuō)是可選的。 字符串中的任何一個(gè)%f是用歸檔檢索中的文件名替換,并且%p是用服務(wù)器上的復(fù)制目的地的路徑上復(fù)制目的地的路徑名 替換。(路徑名是相對(duì)當(dāng)前工作路徑的,如客戶端的data路徑)任意一個(gè)%r是用包含最新可用重啟點(diǎn)的文件名替換。 這是最早的文件,必須保留以轉(zhuǎn)儲(chǔ),從而實(shí)現(xiàn)一致性,因此這個(gè)信息可以用于截?cái)鄽w檔至實(shí)現(xiàn)從當(dāng)前轉(zhuǎn)儲(chǔ)中重啟的最低要求。 %r典型的只用于熱備配置(參閱Section 25.2)。%%可以嵌入一個(gè)實(shí)際的%字符。
對(duì)命令來(lái)說(shuō),只有當(dāng)成功時(shí)返回一個(gè)零退出狀態(tài)是很重要的。命令會(huì)被要求歸檔命令中沒(méi)有出現(xiàn)的文件名; 當(dāng)為要求是,必須返回非零。如:
restore_command = 'cp /mnt/server/archivedir/%f "%p"' restore_command = 'copy "C:\\server\\archivedir\\%f" "%p"' # Windows
這個(gè)選項(xiàng)參數(shù)聲明一個(gè)在每次重啟時(shí)執(zhí)行的shell命令。archive_cleanup_command為清理備庫(kù)不需要的歸檔WAL文件提供一個(gè)機(jī)制。 任何一個(gè)%r由包含最新可用重啟點(diǎn)的文件名代替。這是最早的文件,因此必須保留以允許轉(zhuǎn)儲(chǔ)能夠重新啟動(dòng), 因此所有早于%r的文件可以安全的移除。這個(gè)信息可以用于刪除歸檔至能滿足從當(dāng)前轉(zhuǎn)儲(chǔ)重啟的最低要求。 對(duì)典型單備配置中的archive_cleanup_command而言, contrib(參閱Section F.22)中的pg_archivecleanup是一個(gè)方便的目標(biāo),例如:
archive_cleanup_command = 'pg_archivecleanup /mnt/server/archivedir %r'
然而需要注意的是,如果多個(gè)備服務(wù)器從相同的歸檔路徑轉(zhuǎn)儲(chǔ),需要確保在任何一個(gè)備服務(wù)器不在需要之前,不能刪除WAL文件。 在熱備配置中,會(huì)明顯的用到archive_cleanup_command(參閱Section 25.2)。 通過(guò)%%,在命令中嵌入一個(gè)實(shí)際的%字符。
如果命令返回一個(gè)非0的退出狀態(tài),那么一個(gè)會(huì)寫(xiě)一個(gè)警告日志信息。
這個(gè)參數(shù)是可選的,用于聲明一個(gè)只在恢復(fù)完成時(shí)執(zhí)行的SHELL命令。 recovery_end_command的目的是為復(fù)制或恢復(fù)之后進(jìn)行的清理動(dòng)作提供一個(gè)機(jī)制。 %r由包含最新可用重啟點(diǎn)的文件名代替,如在archive_cleanup_command中的那樣。
如果命令返回一個(gè)非0的退出狀態(tài),那么一個(gè)會(huì)寫(xiě)一個(gè)警告日志信息,并且 數(shù)據(jù)庫(kù)將會(huì)繼續(xù)啟動(dòng)。如果命令被一個(gè)信號(hào)終止,數(shù)據(jù)庫(kù)不會(huì)繼續(xù)啟動(dòng)。