復原串流

您可以復原永久失敗的串流,而不必建立新的串流。您可以指定 Datastream 嘗試從來源繼續讀取變更的位置。

串流復原總覽

正在執行的串流可能會發生無法復原的錯誤,並將狀態變更為 FAILED_PERMANENTLY。這類錯誤會導致串流無法繼續執行,並可能導致資料遺失。

您可以將永久失敗的串流設為忽略錯誤,並繼續讀取持續進行的事件,而非重新建立串流並回填歷來資料,藉此復原串流。如要復原持續失敗的串流,您可以重設複製作業,從其他複製位置開始讀取。每個支援的來源類型都有自己的複製位置定義:

  • 對於 Oracle 來源,複製位置是資料庫中的重做記錄檔,以及這個檔案中的系統變更編號 (SCN)。
  • 對於 MySQL 來源,複製位置是資料庫二進位記錄檔 (binlog) 檔案和此檔案中的位置 (以 binlog 為基礎的複製功能),或是稱為 GTID 集合的全域交易 ID 集合 (以 GTID 為基礎的複製功能,僅支援 Datastream API)。
  • 對於 SQL Server 來源,複製作業位置是交易記錄或變更資料表中的記錄檔序號 (LSN)。
  • 對於 PostgreSQL 來源 (包括 PostgreSQL 適用的 AlloyDB),複製位置是複製運算單元中的記錄序號 (LSN)。在復原期間,串流會從複製運算單元中的第一個 LSN 開始讀取。

復原 MySQL 或 Oracle 來源的資料流

如要復原 MySQL (以 binlog 為基礎的複製作業) 或 Oracle 來源的串流,您可以使用下列選項:

  • 從目前位置重試 (建議選項):選取這個選項,嘗試從上次串流失敗的目前位置開始串流。您必須先修正記錄檔案,或從備份復原記錄檔案。這是建議的做法。

  • 略過目前位置,從下一個可用位置串流內容:如果缺少一或多個記錄檔,請選取這個選項略過這些檔案,從後續可用檔案中的第一個位置繼續串流內容。如果缺少的記錄檔中有任何變更,這些變更都會遺失,不過執行補充作業可以復原這些變更。

  • 略過目前位置,從最新位置開始串流內容:如果缺少一或多個記錄檔,請選取這個選項略過這些檔案,從最新記錄檔中的最新位置繼續串流內容。缺少的記錄檔中所做的變更會遺失,但您可以執行補充作業來復原這些變更。

  • 從偏好的串流檔案和位置繼續串流內容:選取這個選項,即可從特定的記錄檔和記錄檔位置繼續串流內容。如果指定的記錄檔位置未與遺失的記錄檔位置重疊或緊接在其後,部分變更可能會遺失。您可以執行補充作業來復原這些變更。

如要復原 MySQL 或 Oracle 來源的永久失敗串流,請執行下列步驟:

  1. 前往 Google Cloud中的「Streams」頁面。

    前往「串流」頁面

  2. 在要復原的串流名稱所在的資料列中,按一下「復原」

  3. 「Choose a recovery strategy」窗格隨即開啟。選取所需選項。如果您選取「從偏好的串流檔案和位置繼續串流內容」,請輸入以下內容:

    • 針對 MySQL 來源:請輸入「檔案名稱」欄位中的記錄檔案名稱,以及「位置」欄位中的記錄位置。如果未指定位置,串流會從指定記錄檔的第一個位置繼續。
    • 針對 Oracle 來源:請輸入「System Change Number (SCN)」欄位中的系統變更編號 (SCN)。這是必填欄位。
  4. 按一下 [套用]

  5. 當串流恢復後,串流頁面中的「已復原」欄會顯示時間戳記。

復原 PostgreSQL 來源的串流

如要復原 PostgreSQL 來源的串流,您必須提供複製運算單元名稱。伺服器會使用這個複製作業時段將事件傳送至 Datastream。複製運算單元名稱可以與用於失敗串流的運算單元相同,也可以不同:

  • 如果新的複製運算單元名稱不同,請將新的複製運算單元名稱提供給 Datastream。
  • 如果您未提供複製運算單元名稱,Datastream 就會使用來源設定中指定的複製運算單元名稱。

    如要進一步瞭解複製運算單元,請參閱「設定來源 PostgreSQL 資料庫」。

從記錄檔位置遺失開始,到新複製運算單元中出現第一組 LSN 為止,期間發生的任何來源變動事件都會遺失。您可以執行補充作業來復原這些變更。

如要復原 PostgreSQL 來源的永久失敗串流,請執行下列步驟:

  1. 前往 Google Cloud中的「Streams」頁面。

    前往「串流」頁面

  2. 在要復原的串流名稱所在的資料列中,按一下「復原」

  3. 「Define a new replication slot」窗格隨即開啟。

  4. 在「複製運算單元名稱」欄位中,提供要用於復原串流的新複製運算單元名稱。如果您使用相同名稱重新建立複製運算單元,或是想重複使用設定來源時指定的運算單元,可以將這個欄位留空。

  5. 按一下 [套用]

  6. 當串流恢復後,串流頁面中的「已復原」欄會顯示時間戳記。

您也可以在「串流詳細資料」頁面中復原永久失敗的串流。如要這麼做,請在查看串流詳細資訊時,按一下「復原串流」

復原 SQL Server 來源的串流

如要復原 SQL Server 來源的串流,您可以使用下列選項:

  • 從第一個可用位置繼續:如果記錄內容遭到截斷,或是變更資料表中缺少部分記錄,而您希望從第一個可用事件繼續串流,請選取這個選項。缺少的事件會遺失,但您可以執行補充作業來復原這些事件。

  • 從偏好的記錄序號 (LSN) 繼續串流:選取這個選項,即可從交易記錄或變更資料表中的特定 LSN 繼續串流。如果指定的 LSN 未與 Datastream 可擷取到的最後一個 LSN 重疊或緊接在其後,部分事件可能會遺失。您可以執行補充作業來復原這些事件。

    交易記錄和變更資料表中的 LSN 都包含 20 個十六進位字元,但交易記錄中的 LSN 會以分隔符分隔。例如:

    • 交易記錄中的 LSN:0000123C:0000BA78:0004
    • 變更資料表中的 LSN:0000123C0000BA780004

如要復原 SQL Server 來源的永久失敗串流,請執行下列步驟:

  1. 前往 Google Cloud中的「Streams」頁面。

    前往「串流」頁面

  2. 在要復原的串流名稱所在的資料列中,按一下「復原」

  3. 「Choose a recovery strategy」窗格隨即開啟。選取所需選項。

  4. 按一下 [套用]

  5. 當串流恢復後,串流頁面中的「已復原」欄會顯示時間戳記。

在手動容錯情況下,為 MySQL 來源使用串流復原功能

您可以執行手動容錯作業,並使用串流復原功能,避免在維護期間或主要執行個體發生故障時,從頭重新建立串流。一般來說,Datastream 不支援將備援機制切換為複本,因為這會中斷 binlog 連續性,但您可以按照下列步驟復原串流,並確保擷取變更資料:

  1. 停止對主要執行個體的所有寫入作業。
  2. 請確認資料更新間隔指標已設為 0。這表示 Datastream 已擷取所有變更,且來源中沒有可讀取的新事件。詳情請參閱「監控串流」。
  3. 移轉至新的資料庫執行個體。
  4. 如有需要,請將串流的連線設定檔更新為新的資料庫執行個體 (例如,您可能需要變更資料庫主機名稱或 IP 位址)。詳情請參閱「修改連線設定檔」。
  5. 從備援執行個體的特定位置復原串流,確保 CDC 連續性。

後續步驟