跳到主要內容 跳至補充內容

設定容錯移轉

資訊備註
  • 此主題中所述的程序應由您的 PostgreSQL DBA 執行。
  • 需要 Data Movement gateway 2024.11.14 或更高版本

此主題說明如何設定 PostgreSQL 和 Data Movement gateway 以支援容錯移轉情境。您需要執行的程序取決於您的特定 PostgreSQL 容錯移轉設定。

如果主要資料庫和輔助資料庫的資料庫物件 ID 在容錯移轉後保持不變 (通常情況如此),則只需使用輔助資料庫伺服器的 IP 位址更新 Data Movement gateway 機器上的主機檔案。不過,如果容錯移轉後輔助資料庫的資料庫物件 ID 與主要資料庫不同,則需要進行額外的設定。通常不可能預先知道物件 ID 是否會變更,但如果您知道,請執行下面所述的當主要資料庫和輔助資料庫的物件 ID 不同時設定容錯移轉程序。如果您不知道物件 ID 是否會變更,我們建議執行當主要資料庫和輔助資料庫的物件 ID 相同時設定容錯移轉中描述的較簡單的程序,因為物件 ID 在容錯移轉後通常會保持不變。

如果您執行了更簡單的設定,而且 Data Movement gateway 在容錯移轉期間無法復原,則您將需要執行當主要資料庫和輔助資料庫的物件 ID 不同時設定容錯移轉程序。

資訊備註雖然複寫專案和資料管道專案中的登陸任務都支援當主要資料庫和輔助資料庫的物件 ID 相同時設定容錯移轉程序,但只有複寫專案支援當主要資料庫和輔助資料庫的物件 ID 不同時設定容錯移轉程序。

當主要資料庫和輔助資料庫的物件 ID 相同時設定容錯移轉

發生容錯移轉時,資料任務將遇到可復原的錯誤,並將嘗試重新連線至主要資料庫伺服器的 IP 位址。不過,這通常不會成功,因為輔助資料庫伺服器 (幾乎總是) 具有不同的 IP 位址。

如果 IP 位址的切換不是由 DNS 容錯移轉服務處理,則需要在 Data Movement gateway 機器上的主機檔案中指定新的 IP 位址。主機檔案的路徑是 /etc/hosts。更新主機檔案後,資料任務將自動繼續。

當主要資料庫和輔助資料庫的物件 ID 不同時設定容錯移轉

資訊備註僅透過複寫專案支援。

在標準操作中,資料任務在從 PostgreSQL 來源移動資料時會自動建立槽位。槽位名稱在其名稱中包含資料庫的物件 ID。在極少數情況下,主要資料庫和輔助資料庫的物件 ID 會不同。在這種情況下,資料任務將在容錯移轉期間失敗,因為這無法在輔助資料庫中找到為主要資料庫建立的槽位。在此情況下,會出現以下錯誤:

[SOURCE_CAPTURE ]E: Can't resume task after replication slot was dropped. [1020101] (postgres_endpoint_capture.c:445)

如果遇到此類錯誤,請執行以下操作:

  1. 在連接器設定的內部屬性區段,新增內部屬性 slotName 並設定槽位名稱值。

    指定的 slotName 必須已經存在於主要 PostgreSQL 伺服器中。您可以建立新的槽位,也可以使用現有的槽位。

    若要建立新槽位並擷取其 LSN,請執行下列查詢:

    SELECT lsn FROM pg_create_logical_replication_slot ('user_provided_slot_name', 'test_decoding');

    若要取得可用槽位及其 LSN 的清單,請執行下列查詢:

    SELECT slot_name, restart_lsn FROM pg_replication_slots WHERE slot_type = 'logical';

  2. 進階執行選項對話方塊的來源變更位置欄位中輸入指定 slotName 的 LSN,然後準備並開始資料任務。

    如果發生容錯移轉,輔助伺服器將幾乎立即接管並成為主要伺服器。容錯移轉應由 pg_failover_slots 延伸處理。

  3. 發生容錯移轉時,資料任務將遇到可復原的錯誤,並將嘗試重新連線至主要資料庫伺服器的 IP 位址。不過,這通常不會成功,因為輔助資料庫伺服器 (幾乎總是) 具有不同的 IP 位址。如果 IP 位址的切換不是由 DNS 容錯移轉服務處理,則需要在 Data Movement gateway 機器上的主機檔案中指定新的 IP 位址。主機檔案的路徑是 /etc/hosts。更新主機檔案後,資料任務將自動繼續。

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們可以如何改善!