標籤:
4.6 有效清理和恢複結束
最近幾年, recovery.conf 已經變得越來越強大了。早在初期(在 PostgreSQL 9.0之前), 僅有 restore_command 和一些 recovery_target_time 相關設定。更多的現代 PostgreSQL 版本提供了更多的東西,讓您有機會以一個很好和專業的方式控制您的重放進程。
在本節中,您將學習有什麼樣的設定,您將怎樣輕鬆地使用這些功能。
4.6.1 取得重啟點的控制權
到現在為止,我們已經無限地歸檔了XLOG。就像在現實生活中,無限是一個引起麻煩的概念。正如John Maynard Keynes已經在他著名的書中所陳述,The General Theory of Employment, Interest, and Money:
"In the long run, we are all dead."
適用於Keynes的激勵的東西對於XLOG歸檔同樣是如此;您根本無法繼續做下去。在有些時候,XLOG必須被扔掉。為了使清理更容易,您可以放一個archive_cleanup_command到recovery.conf中。就像大多數其他命令,(例如,restore_command),則是以通用的shell指令碼。您會把該指令碼放在這裡,該指令碼將在每個重啟點被執行。那麼,什麼是重起點?每次PostgreSQL從基於檔案重放轉換到基於流的重放,您就正在面對一個重起點。事實上,再次啟動流複製被認為是一個啟動點。
重起點一到達,您就可以讓PostgreSQL執行一些清理程式(或任何其他東西)。清理掉舊的XLOG或觸發一些通知是很容易的。
如下指令碼顯示了您如何清理掉任何一天前的XLOG:
#!/bin/sh
find /archive -mtime +1 -exec rm -f {} \;
請記住,您的指令碼可以是任何複雜的類型。您必須決定一個適當的策略來處理XLOG。每個企業的情況是不同的,您可以靈活地控制您的歸檔和複製行為。
4.6.2 調整您的恢複結束
recovery_end_command提供和archive_cleanup_command類似的目的。當您的恢複(或XLOG流)已經完成,它會觸發一些指令碼執行。
同樣,您可以用它來清理掉舊XLOG,發出通知,或執行任何其他想執行的操作。
PostgreSQL Replication之第四章 設定非同步複製(6)