這包含下列步驟
主節點將最新的 GCI 設定為重新啟動 GCI,然後將其系統檔案同步到所有其他參與系統重新啟動的節點。
-
下一步是同步系統中所有節點的結構描述。這會在 15 個傳遞中執行。我們在此嘗試解決的問題,發生在節點運作時建立結構描述物件,但在節點關閉時遭捨棄,並且可能在該節點無法使用時,以相同的結構描述 ID 建立新的物件。為了處理這種情況,首先必須從啟動節點的角度,重新建立所有應該存在的物件。在此之後,任何叢集中其他節點在該節點「“死亡”」時所捨棄的物件都會被捨棄;這也適用於中斷期間所捨棄的任何資料表。最後,在啟動節點無法使用時,由其他節點建立的任何資料表,都會在啟動節點上重新建立。所有這些作業都是啟動節點的本機作業。作為此程序的一部分,也必須確保已在本機建立所有需要重新建立的資料表,並且在所有核心區塊中為這些資料表設定適當的資料結構。
在主節點上執行先前描述的程序後,新的結構描述檔案會傳送給所有其他參與系統重新啟動的節點,它們會執行相同的同步作業。
參與重新啟動的所有片段都必須具有從
DBDIH
取得的適當參數。這會導致從DBDIH
傳送許多START_FRAGREQ
信號至DBLQH
。這也會啟動片段的還原,這些片段會一個一個還原,並在從磁碟讀取還原資料,以及平行將從磁碟讀取的還原資料套用到主記憶體的過程中,一次還原一個記錄。這只會還原資料表的主記憶體部分。一旦還原所有片段,就會向啟動叢集中的所有節點傳送
START_RECREQ
訊息,然後會套用資料表任何磁碟資料部分的所有復原日誌。-
接下來,必須準備執行重做日誌,此日誌最多可以在四個階段中執行。對於每個片段,可能需要執行來自數個不同節點的重做日誌。這是透過為特定片段在不同階段中執行重做日誌來處理,如同在傳送
START_FRAGREQ
信號時,在DBDIH
中所決定的。會為每個在此階段中需要執行的階段和片段傳送EXEC_FRAGREQ
信號。在傳送這些信號後,會向所有節點傳送EXEC_SRREQ
信號,以告知它們可以開始執行重做日誌。注意在開始執行第一個重做日誌之前,必須確定先前由
DBLQH
(在第 4 階段) 啟動的設定已完成,或等到完成後再繼續。 在執行重做日誌之前,必須計算出從何處開始讀取以及應該到達重做日誌結尾的位置。當到達要還原的最後一個 GCI 時,應該會找到重做日誌的結尾。
在完成重做日誌的執行後,超出要還原的最後一個 GCI 所寫入的所有重做日誌頁面都會失效。考慮到重做日誌的循環性質,這可能會使失效延伸到超出最後一個執行的新的重做日誌檔案。
在完成上一個步驟後,
DBLQH
會使用START_RECCONF
訊息將此回報給DBDIH
。當主節點收到來自所有啟動節點的回覆訊息時,它會將
NDB_STARTCONF
信號傳回至NDBCNTR
。NDB_STARTCONF
訊息會向NDBCNTR
發出STTOR
第 4 階段結束的信號,而這是唯一在此階段中參與重要程度的區塊。