2012-06-18 52 views
4

有人可以向我解釋時間線和歷史文件的目的以及recovery.conf中的'recovery_target_timeline'設置。時間表和歷史文件postgresql 9.1

我從postgresql 9.1文檔中得到的模糊理解是,當從設備完成恢復時,它切換到新的時間線以防止覆蓋之前時間線的WAL。我不清楚這是如何用於恢復場景以及.history文件的目的和'recovery_target_timeline'設置爲'latest'。

我想了解當我推動奴隸成爲新的主人會發生什麼。它在接受讀/寫查詢之前恢復並啓動新的時間線。

現在,如果我將現有的從設備升級爲主設備,是否需要/使用前一個從設備(新主設備)生成的歷史文件來讀取新設備生成的新的WAL連續歸檔/日誌傳送。

非常感謝。

+0

recovery_target_timeline用於在您之前已經執行時間點恢復之後恢復的事件中指定時間軸,該時間點會創建不同的時間軸。請參閱http://www.postgresql.org/docs/9.1/static/continuous-archiving.html#BACKUP-TIMELINES –

回答

0

爲了理解時間表,你必須明白的是他們要避免MVCC和時間軸上的問題。思考這個問題的好方法是在複製的情況下。在Master/Slave流式複製中,您不希望某人將主設備作爲主設備插入一堆信息,然後將其重新轉換爲從設備。如果你這樣做,WAL段的二進制日誌不能再正常運行,你會得到數據庫損壞。

當您將一個從設備恢復到新主設備時,它會完成「恢復」並啓動它自己的時間軸。從現在開始,它現在是主人,不能在沒有重建的情況下回到奴隸身邊。這提出了一些故障切換和故障恢復的問題,但實現此目標的方法是定期故障與舊的主重建數據庫(使用pg_basebackup)作爲一個新的奴隸。這意味着每個故障轉移/故障回覆都是一個新的時間表。

是的,這確實會影響多臺服務器的故障切換,因爲從站必須更改時間軸。