如果串流在 Datastream 中發生執行階段錯誤,您可以在 Google Cloud 控制台的「Streams」(串流) 或「Stream details」(串流詳細資料) 頁面查看詳細資料。您也可以使用 Datastream API 擷取診斷資訊。部分問題 (例如密碼無效) 可以復原,修正後就會自動繼續複製。其他錯誤會影響單一物件 (例如不支援的資料類型),或在 Datastream 無法連線至來源時停止串流。
如要排解問題,請查看錯誤訊息,並按照設定、連線、來源或 BigQuery 目的地錯誤的步驟操作。
設定和連線能力錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
| 無法連線至來源資料庫 (一般)。 | 造成這種情況的原因有很多,如何排解這項錯誤:
直播會自動恢復。 |
| 無法連線至來源資料庫 (IP 許可清單)。 | 如果選擇的連線方式是「IP 許可清單」,但來源資料庫未正確新增一或多個 Datastream 傳出 IP 位址,就可能發生這種情況。請務必在網路防火牆設定 Datastream 連線設定檔中顯示的傳出 IP 位址,讓來源資料庫伺服器接受來自這些 IP 位址的連線。問題解決後,直播就會自動恢復。 |
| 無法連線至來源資料庫 (轉送 SSH 通道)。 | 如果轉送 SSH 通道發生問題,就可能發生這種情況。檢查通道狀態。如果通道已停止,則必須啟動。問題解決後,直播就會自動恢復。 |
| Datastream 無法透過轉送 SSH 通道連線至堡壘主機。 | 請確定已在來源連線設定檔中正確設定轉送 SSH 通道,而且 SSH 通道伺服器的通訊埠已開放。 |
| 憑證有誤,無法連線至來源資料庫。 | 如果定義來源連線設定檔時提供的憑證有問題,就可能發生這種情況。前往「Connection profiles」(連線設定檔) 頁面,然後選取指定的連線設定檔。確認憑證設定正確無誤。完成變更後,請儲存連線設定檔,串流就會自動恢復。 |
| 無法使用私人連線連至來源資料庫。 | 這項錯誤與虛擬私有雲對等互連私人連線方法有關。
|
| 無法使用 Private Service Connect 介面連線至來源資料庫。 |
|
| 啟用組織政策限制/datastream.disablePublicConnectivity 時,不允許使用 STATIC_SERVICE_IP_CONNECTIVITY 連線類型。 | 您為建立中的連線設定檔,選取了公開 IP 允許清單或轉送 SSH 通道網路連線方法。不過,Datastream 的「封鎖公開連線方法」組織政策已啟用。因此,您無法為連線設定檔選取公開連線方法。 如要解決這個問題,請選取私人虛擬私有雲對等互連或 Private Service Connect 介面網路連線方法,或停用組織政策。 如要停用組織政策,請按照下列步驟操作:
|
| 為串流設定來源資料庫時,在要納入的物件清單中,找不到要移轉的資料表和結構定義。 | 如果資料庫有數千個資料表和結構定義,就可能發生這種情況。在 Google Cloud 控制台設定串流來源時,部分物件可能不會列入要提取的物件清單。在「Select objects to include」(選取要納入的物件) 部分,選取「Custom」(自訂),而非「Specific schemas and tables」(特定結構定義和資料表)。在「Object matching criteria」(物件比對條件) 欄位中,輸入要讓 Datastream 提取的結構定義和資料表。 |
| 我已使用「Objects to include」(要納入的物件) 選單,在串流中新增多個資料表。不過,查看「串流詳細資料」中的「物件」分頁時,我發現缺少部分資料表。 | 請確認每份資料表至少有一項 CDC 更新,Datastream 才能辨識變更,並自動將資料表納入串流。 |
| 在 Google Cloud 控制台使用「Objects to include」(要納入的物件) 選單時,無法載入物件清單。 | 如果資料庫有超過 5,000 個結構定義和資料表,就可能發生這種情況。請改用其他方法指定要納入的物件,或使用 Datastream API。詳情請參閱「設定來源資料庫」。 |
| 串流期間捨棄且未複製到目的地的事件。 | Datastream 可能會在串流期間捨棄不支援的事件。您可以採取下列行動來解決問題:
|
| 嘗試連線至資料來源時逾時。請確認主機名稱和通訊埠設定正確無誤,且資料來源可供存取。 | 使用虛擬私有雲對接時,Datastream 網路無法直接與私人服務網路 (例如 Cloud SQL 執行個體) 對接,因此您必須使用網路位址轉譯 (NAT) VM,在 Datastream 和資源之間建立連線。如要進一步瞭解如何設定網路位址轉譯 VM,請參閱「設定虛擬私有雲對接」。 |
| 物件「OBJECT_NAME」的結構定義過大,Datastream 無法處理。 | Datastream 不支援複製對應來源結構定義超過 2,621,440 個 Unicode 字元的事件。系統會捨棄這些事件,並顯示下列原因代碼:UNSUPPORTED_LARGE_SCHEMA。您可能需要排除或重新命名部分資料欄。或者,您也可以排除結構定義過大的物件。 |
| 串流狀態已變更。 | 雖然造成這項錯誤的原因可能不只一個,但常見的根本問題是來源設定無效。如果串流因這則錯誤訊息而無法啟動,請檢查來源設定是否有重複的金鑰或資料表名稱、資料不一致或結構定義衝突。許多問題都能解決,只要直接在 Google Cloud 控制台編輯失敗的串流設定,並調整納入和排除物件的項目即可。詳情請參閱「修改來源資料庫的設定資訊」。 |
Oracle 錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
| 來源資料庫的增補記錄設定有誤。 | 如果來源資料庫的補充記錄設定不正確,擷取進行中的變更資料擷取 (CDC) 資料時可能會發生錯誤。確認補充記錄設定正確無誤。具體來說,請確認從來源串流至目的地的資料庫資料表已啟用補充記錄功能。直播會自動恢復。 |
| 記錄位置遺失,因此無法繼續複製。 | 如果複製程序長時間暫停,導致記錄位置遺失,就可能發生這項錯誤。串流暫停的時間不應接近記錄檔保留期限。重新建立串流。 |
| 記錄檔部分或全部遺失。 | 記錄檔可能已刪除。除非您指定最短輪替週期來保留記錄檔,否則 Oracle 會盡快清除記錄檔。在 Oracle 伺服器中,設定記錄檔的保留時間。例如,使用 如為 RDS 部署項目,請使用 |
| 排除清單會涵蓋納入清單。 | 納入清單完全包含在排除清單中,因此 Datastream 從來源提取的物件清單為空白。請修改物件選項,然後再試一次。 |
| Oracle 資料庫的記錄模式未設為 ARCHIVELOG。 | 請變更記錄模式,然後再試一次。 |
Datastream 傳回 ORA-00942: table or view does not exist 錯誤訊息,但所有設定都正確。 |
這可能是 Oracle 伺服器快取所致。重新建立資料庫使用者,應該就能解決快取問題。 |
| 串流執行時,對 Oracle 來源所做的變更不會反映在目的地。 | 如果使用 LogMiner 做為 CDC 方法,Datastream 會從封存的重做記錄檔讀取資料。在這種情況下,您對來源所做的變更要等到記錄檔封存後,才會反映在目的地。如要在目的地查看變更,請將 CDC 方法變更為二進位記錄讀取器、變更記錄封存政策,或手動強制切換記錄。詳情請參閱「使用 Oracle 資料庫重做記錄檔」。 |
| Oracle CDC 設定驗證失敗。 | 您選取的 CDC 方法與來源資料庫設定不符。請選取其他方法,或完成 CDC 方法的設定。詳情請參閱「設定來源 Oracle 資料庫」。 |
| 發生未預期的內部錯誤。 | 如要瞭解詳情,請與 Google 支援團隊聯絡。 |
MySQL 錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
| 來源資料庫的二進位記錄檔設定有誤。 | 如果來源資料庫的二進位記錄檔設定有誤,MySQL 連續串流就可能發生這種情況。如要排解這項錯誤,請執行下列操作:
|
| 二進位記錄位置遺失,因此無法繼續複製。 | 如果複製程序長時間暫停,導致二進位記錄檔位置遺失,就可能發生這項錯誤。串流暫停的時間不應接近二進位記錄保留期限。重新建立串流。 |
| 來源資料庫和目的地版本不相容,因此無法執行串流。 | 如果來源資料庫不符合版本支援矩陣,就可能發生這種情況。如要排解這項錯誤,請執行下列操作:
|
| AWS RDS MySQL 來源二進位記錄檔部分或全部遺失。 | 二進位記錄可能已刪除。除非您指定最短輪替週期來保留 binlog,否則 AWS RDS 會盡快清除 binlog。在來源 AWS RDS MySQL 執行個體中,設定二進位記錄的保留時間 (以小時為單位)。例如,使用 mysql.rds_set_configuration('binlog retention hours', 168); 即可將二進位記錄檔保留至少 7 天。 |
| 排除清單會涵蓋納入清單。 | 納入清單完全包含在排除清單中,因此 Datastream 從來源提取的物件清單為空白。請修改物件選項,然後再試一次。 |
| Datastream 無法複製 MySQL 資料庫。 | 請確認 Datastream 有權複製資料庫。 |
| 為 MySQL 來源建立連線設定檔時,「Encryption type」(加密類型) 選單不接受多個 PEM 編碼 SSL 憑證。 | Datastream 不支援 MySQL 連線設定檔中的 SSL 憑證鏈。僅支援單一 x509 PEM 編碼憑證。 |
| 從 MySQL 來源串流時延遲時間過長。 | 提高 Datastream 從來源資料庫讀取資料的能力:
|
| MySQL CDC 設定驗證失敗。 | 來源資料庫未設定為使用您選取的 CDC 方法。請選取其他方法,或完成 CDC 方法的設定。詳情請參閱「設定來源 MySQL 資料庫」。 |
| 發生未預期的內部錯誤。 | 如要瞭解詳情,請與 Google 支援團隊聯絡。 |
PostgreSQL 錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
| 來源資料庫的邏輯解碼設定有誤。 | 確認邏輯解碼設定正確無誤。請參閱「設定來源 PostgreSQL 資料庫」。 |
| 複製運算單元不存在。 | 如果資料庫中沒有複製槽,擷取進行中的變更資料擷取 (CDC) 資料時可能會發生錯誤。確認複製運算單元設定正確。請參閱「設定來源 PostgreSQL 資料庫」。 |
| 複製運算單元設有錯誤的外掛程式。 | 如果複製運算單元設有 pgoutput 以外的外掛程式,就可能發生這個錯誤。確認複製運算單元設定正確。詳情請參閱「來源 PostgreSQL 資料庫」。 |
| 複製運算單元在其他程序中處於啟用狀態。 | 如果複製運算單元正由其他程序使用,就可能發生這項錯誤。複製運算單元一次只能由一個程序使用。請確認除了 Datastream 以外,沒有其他程序使用相同的複製運算單元。 |
| 出版品設定有誤。 | 如果發布項目未設為公開串流設定中的資料表,就可能發生這項錯誤。確認出版品設定正確無誤。請參閱「設定串流的來源資料庫相關資訊」。 |
| 出版品不存在。 | 如果資料庫中沒有發布項目,就可能發生這個錯誤。確認出版品設定正確無誤。請參閱「設定來源 PostgreSQL 資料庫」。 |
| WAL 檔案遺失,無法繼續複製。 | 如果複製程序長時間暫停,導致 WAL 檔案遺失,就可能發生這項錯誤。串流暫停時間不應接近 WAL 檔案保留期限。重新建立串流。 |
| 排除清單會涵蓋納入清單。 | 納入清單完全包含在排除清單中,因此 Datastream 從來源提取的物件清單為空白。請修改物件選項,然後再試一次。 |
| Datastream 無法複製 PostgreSQL 結構定義。 | 請確認 Datastream 有權複製結構定義。 |
| 來源資料庫的大型交易會導致資料複製和同步處理問題。 | 如果您在來源資料庫中插入、更新或刪除大量記錄,複製槽可能會因對應事件而超載。Datastream 需要時間讀取及處理這些事件。PostgreSQL 複製運算單元為單一執行緒,因此在 Datastream 趕上複製運算單元中的所有變更之前,系統會延遲處理複製運算單元中的其他變更,包括其他資料表中的資料變更。 |
| 來源資料庫的大型交易導致 CDC 處理量偏低。 | Datastream 不支援 PostgreSQL 的多執行緒 CDC。如要克服這項限制並提高 CDC 處理量,您可以將來源分割成多個串流,每個串流都有專屬的發布和複製槽。舉例來說,您可以為資料庫中最大的資料表建立一個串流,並為所有其他資料表建立另一個串流,或為優先順序最高的資料表建立一個串流,並為其餘資料表建立另一個串流。用途可能不盡相同,因此您必須考量最適合特定 CDC 情境的做法。如要瞭解如何建立發布作業,請參閱「設定來源 PostgreSQL 資料庫」。 |
不支援的事件已捨棄,原因代碼:BIGQUERY_TOO_MANY_PRIMARY_KEYS。 |
如果資料表的 PostgreSQL 副本識別資訊設為 FULL,Datastream 會將資料表中的所有資料欄視為主鍵。如果資料表中的資料欄超過 16 個,就會違反 BigQuery CDC 限制,導致錯誤。如要解決問題,請完成下列步驟:
|
| 發生未預期的內部錯誤。 | 如要瞭解詳情,請與 Google 支援團隊聯絡。 |
SQL Server 錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
| 資料庫「DATABASE_NAME」已停用 CDC。 | 資料庫必須啟用變更資料擷取 (CDC)。Datastream 需要直接讀取交易記錄,才能將即時變更複製到來源資料庫,並取得完整的記錄資訊。請為資料庫啟用 CDC,然後再試一次。 如要瞭解如何為資料庫啟用 CDC,請參閱「設定來源 SQL Server 資料庫」。 |
| 已停用 CDC 的資料表。 | 串流中包含的所有資料表都必須啟用變更資料擷取 (CDC)。Datastream 需要直接讀取交易記錄,才能將即時變更複製到來源資料表,並取得完整的記錄資訊。請為串流中的資料表啟用 CDC,然後再試一次。 如要瞭解如何為來源資料表啟用 CDC,請參閱「設定來源 SQL Server 資料庫」。 |
| 權限不足。 | Datastream 缺少讀取來源的必要權限。請授予適當權限給用來連結您資料庫的使用者帳戶,然後再試一次。 |
| 不支援 SQL Server EDITION_NAME 版。 | Datastream 不支援這個 SQL Server 版本。如要進一步瞭解支援的 SQL Server 版本,請參閱「SQL Server 做為來源的總覽」。 |
| 不支援 SQL Server Standard VERSION_NAME 版。 | Datastream 不支援這個 SQL Server Standard 版本。如要進一步瞭解支援的 SQL Server 版本,請參閱「SQL Server 來源總覽」。 |
| 交易記錄檔的內容似乎遭到截斷,因此串流無法讀取 LSN「YOUR_LSN」中的事件。 | 如果來源資料庫中已沒有交易記錄,就可能發生這個問題。使用交易記錄 CDC 方法從 SQL Server 來源複製資料時,記錄可能會在 Datastream 讀取前遭到截斷。發生這種情況時,Datastream 無法穩定地將來源資料庫複製到目的地。 如要解決這個問題,請復原串流,或考慮改用變更資料表 CDC 方法。 如要進一步瞭解這兩種方法的差異,請參閱「SQL Server 做為來源的總覽」。 |
| SQL Server CDC 設定:失敗。 | 您選取的 CDC 方法與資料庫設定不符。請變更 CDC 方法,然後再試一次。 |
Salesforce 錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
| 您的權限不足。 | 您設定用來驗證 Salesforce 組織與 Datastream 之間連線的連結應用程式或外部用戶端應用程式使用者,沒有足夠的權限存取要複製的資料。請確認您已正確設定 Salesforce 來源。詳情請參閱「設定 Salesforce 來源」。 |
| Bulk API 2.0 已停用。 | Bulk API 2.0 預設為啟用,適用於 Performance、Unlimited、Enterprise 和 Developer 版本。這則錯誤訊息表示您使用的版本已停用 API,或您使用的憑證權限不足。確認您使用的使用者個人資料已獲派 |
| 超出上限。 | 您已超出 Salesforce API 查詢限制。當 API 限制配額達到 90% 時,就會看到這則訊息。在這種情況下,Datastream 會稍後重試作業。建議您提高 Salesforce API 配額。 |
| 超過刪除上限。 | 查詢已刪除的記錄時,Salesforce 的回應上限為 600,000 個記錄 ID。Salesforce 的最低查詢精細程度為一分鐘,如果在一分鐘內刪除超過 600,000 筆記錄,Salesforce 就會傳回這項錯誤。 |
| 驗證錯誤。 | Datastream 無法通過 Salesforce 驗證,您可能使用了錯誤的憑證或網域名稱。 |
MongoDB 錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
| 驗證失敗。 | 請檢查 Datastream 使用者的 authSource 是否為 admin。Datastream 使用者必須在 admin 資料庫中建立。這個資料庫是特殊權限資料庫,可讓使用者執行特定管理指令。 |
| 無法登入資料庫。 | 請檢查使用者名稱和密碼,然後再試一次。另外,請確認使用者帳戶已在 admin 資料庫建立。如果問題持續發生,可能是使用者帳戶已刪除或未正確建立。 |
排除物件清單無效:{exclude_list}。 |
請按照下列格式指定要排除的物件:DATABASE_NAME.COLLECTION_NAME.FIELD_NAME.NESTED_FIELD_NAME,可以視情況使用萬用字元。有效範例:db.*、database.collection.*、database.*.field.*。 |
| 缺少讀取來源內容的必要權限。 | 請將 readAnyDatabase 角色指派給使用者,然後再試一次。 |
| 不支援 MongoDB VERSION_NAME 版。 | 請使用 5.0 以上版本。 |
Datastream 無法執行 buildinfo 指令來判斷 MongoDB 版本。 |
請確認使用者具備執行 buildinfo 指令的必要權限,然後再試一次。如要進一步瞭解必要權限,請參閱「設定 MongoDB 資料庫」。 |
| 與 MongoDB 叢集的連線逾時。 | 請確認您提供的主機名稱和憑證正確無誤,然後再試一次。 |
| 權限不足,因此無法讀取必要資料。 | 請將 readAnyDatabase 角色指派給用來連線至 MongoDB 叢集的帳戶,然後再試一次。 |
| 用來連線至 MongoDB 叢集的使用者帳戶不存在。 | 請建立使用者帳戶,然後再試一次。 |
| 無法使用所提供的資訊連線。 | 請確認所用連線格式正確無誤 (SRV 或標準),並含有所有必要資訊,例如副本集連線字串的副本集名稱。詳情請參閱「建立 MongoDB 資料庫的連線設定檔」。 |
發生 MongoDB 例外狀況,來源錯誤訊息:{source_error}。 |
如果來源錯誤訊息不清楚,請與 Google 支援團隊聯絡。 |
Spanner 錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
| Spanner 讀取錯誤。 | 如果 Spanner 資料庫與 Datastream 位於不同專案,請確認您已提供必要權限。此外,請確認 Spanner 資料庫有足夠的 CPU 資源,且不會限制要求。 |
| 變更串流超出保留期限。 | 發生這項錯誤的串流無法復原。這項錯誤表示 Datastream 已超過 Spanner 變更串流保留期限,且資料已遺失。如果保留時間範圍較短 (例如只有幾秒或幾分鐘),可以嘗試增加保留時間範圍,並建立新的串流。 |
BigQuery 錯誤
| 錯誤 | 疑難排解步驟 |
|---|---|
BIGQUERY_UNSUPPORTED_PRIMARY_KEY_CHANGE, details: Failed to write to BigQuery due to an unsupported primary key change: adding primary keys to existing tables is not supported. |
如果來源的主鍵有所變更,您必須在 BigQuery 中捨棄資料表,並再次啟動補充作業。這是 BigQuery 的限制,因為如果主鍵不同,就無法確保新事件與現有資料列正確合併。詳情請參閱「設定 BigQuery 目的地」。 |
| 目的地 BigQuery 資料表的記錄數量,明顯多於來源資料表。 | 如果來源資料表沒有主鍵,就可能發生這種情況。在這種情況下,Datastream 會以僅限附加的寫入模式處理資料表,而指定資料列的每個事件都會在 BigQuery 中顯示為個別資料列。 |
| 在「僅附加」寫入模式下執行補充作業時,資料會重複。 | 如果為串流選取「僅附加」寫入模式,資料會以 SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY datastream_metadata.uuid) AS num FROM TABLE_NAME) WHERE num=1
|
| Datastream 已設為合併寫入模式,但變更未在 BigQuery 中合併。 | 確認來源資料表中有主鍵。BigQuery 需要這項資訊,才能將變更合併至目的地資料表。 如果沒有主鍵,請考慮在來源或目的地資料表中新增主鍵。如要在目的地 BigQuery 資料表中新增主鍵,請按照下列步驟操作:
|
| 無法為已複製到 BigQuery 的資料表新增主鍵、移除主鍵或變更主鍵定義。 | 根據預設,Datastream 不支援在已複製到 BigQuery 的資料表中新增主鍵 (如果資料表沒有主鍵),也不支援從已複製到 BigQuery 的資料表中移除主鍵 (如果資料表有主鍵)。不過,您可以變更已複製到 BigQuery 且已有主鍵的來源資料表主鍵定義:
|