串流在執行階段可能會發生錯誤。
- 某些錯誤 (例如來源資料庫的密碼有誤) 可以復原,也就是說,修正後串流就會自動繼續。
- 錯誤可能會影響單一物件,例如含有不支援資料類型的事件。其他錯誤可能會影響多個物件或整個串流,例如 Datastream 無法連線至來源資料庫。
- 系統會視錯誤情況,在 Datastream 使用者介面的「Streams」(串流) 或「Stream details」(串流詳細資料) 頁面提供相關資訊。您也可以使用 Datastream 的 API 擷取錯誤相關資訊。
如要排解錯誤,請前往串流查看錯誤,然後按照錯誤訊息中的步驟操作。
本頁面提供設定、連線、Oracle 和 MySQL 錯誤的相關資訊,以及排解錯誤的步驟。
設定和連線錯誤
錯誤 | 疑難排解步驟 |
---|---|
無法連線至來源資料庫 (一般)。 | 造成這種情況的原因有很多,如要排解這項錯誤,請按照下列步驟操作:
系統會自動繼續播放。 |
無法連線至來源資料庫 (IP 位址許可清單)。 | 如果選擇的連線方式是「IP 許可清單」,但來源資料庫未正確新增一或多個 Datastream 對外 IP 位址,就可能發生這種情況。請確認網路防火牆已設定 Datastream 連線設定檔中顯示的傳出 IP 位址,來源資料庫伺服器才能接受這些 IP 位址傳出的連線。問題解決後,系統就會自動繼續串流。 |
無法連線至來源資料庫 (轉送 SSH 通道)。 | 如果轉送 SSH 通道發生問題,就可能出現這種情況。檢查通道狀態。如果通道已停止,則必須啟動。問題解決後,系統就會自動繼續串流。 |
Datastream 無法透過轉送 SSH 通道連線至防禦主機。 | 請確認已在來源連線設定檔中正確設定轉送 SSH 通道,而且 SSH 通道伺服器的埠已開啟。 |
憑證有誤,因此無法連線至來源資料庫。 | 如果定義來源連線設定檔時提供的憑證有問題,就可能會發生這種情況。前往「連線設定檔」頁面,然後選取指定的連線設定檔。確認憑證設定正確無誤。完成變更後,請儲存連線設定檔,串流就會自動繼續。 |
無法使用私人連線連線至來源資料庫。 | 這個錯誤與虛擬私有雲對等互連私人連線方法有關。
|
使用 Private Service Connect 介面連線至來源資料庫時發生錯誤。 | |
如果已啟用機構政策限制/datastream.disablePublicConnectivity,則不允許使用 STATIC_SERVICE_IP_CONNECTIVITY 連線類型。 | 您為要建立的連線設定檔選擇了公開 IP 許可清單或轉送安全殼層通道網路連線方法。不過,系統已啟用 Datastream 的「封鎖公開連線方法」機構政策。因此,您無法為連線設定檔選取公開連線方法。 如要解決這個問題,請選取私人 VPC 對等互連或 Private Service Connect 介面網路連線方法,或是停用機構政策。 如要停用機構政策,請按照下列步驟操作: |
設定串流的來源資料庫時,我找不到要移轉的資料表和結構定義。 | 如果資料庫有數千個資料表和結構定義,就可能發生這種情況。在 Google Cloud 控制台中設定串流的來源時,部分物件可能不會納入要提取的物件清單。在「選取要納入的物件」部分中,選取「自訂」,而非「特定結構定義和資料表」。在「物件比對條件」欄位中,輸入要讓 Datastream 擷取的結構定義和資料表。 |
我已使用「要納入的物件」選單,將多個資料表新增至串流。不過,查看「串流詳細資料」中的「物件」分頁時,我發現缺少部分表格。 | 請確保每個資料表至少有一項 CDC 更新,Datastream 才能辨識變更,並自動將資料表納入串流。 |
在 Google Cloud 控制台使用「要納入的物件」選單時,無法載入物件清單。 | 如果資料庫的結構定義和資料表超過 5,000 個,就可能發生這種情況。請使用其他方法指定要納入的物件,或使用 Datastream API。詳情請參閱「設定來源資料庫」。 |
串流期間捨棄的事件,不會複製到目的地。 | 串流期間,Datastream 可能會捨棄不支援的事件。如要解決這個問題,請採取下列行動:
|
嘗試連線至資料來源時逾時。請確認主機名稱和通訊埠設定正確無誤,且資料來源可存取。 | 使用虛擬私有雲對等互連時,Datastream 網路無法直接與私人服務網路 (例如 Cloud SQL 執行個體) 對等互連,因此您需要使用網路位址轉譯 (NAT) VM,在 Datastream 與資源之間建立連線。如要進一步瞭解如何設定 NAT VM,請參閱「設定 VPC 對等互連」。 |
物件 OBJECT_NAME 的結構定義過大,Datastream 無法處理。 | Datastream 不支援複製相應來源結構定義大於 2,621,440 個 Unicode 字元的事件。這些事件會因下列原因代碼而遭到捨棄:UNSUPPORTED_LARGE_SCHEMA 。您可能需要排除或重新命名部分資料欄。或者,您也可以排除具有大型結構定義的物件。 |
串流狀態已變更。 | 造成這項錯誤的原因可能不只一個,但常見的根本問題是來源設定無效。如果串流無法啟動並顯示這則錯誤訊息,請檢查來源設定是否有重複的鍵或表格名稱、資料不一致或結構定義衝突。如要解決許多問題,可以直接在 Google Cloud 控制台中編輯失敗的串流設定,並調整納入和排除的物件項目。詳情請參閱「修改來源資料庫的設定資訊」。 |
Oracle 錯誤
錯誤 | 疑難排解步驟 |
---|---|
來源資料庫的增補記錄設定有誤。 | 如果來源資料庫的增補記錄設定不正確,就可能發生擷取進行中變更資料擷取 (CDC) 資料時發生錯誤。確認補充記錄設定正確無誤。具體來說,請確認從來源串流至目的地的資料庫資料表已開啟補充記錄。系統會自動繼續播放。 |
記錄檔位置遺失,因此無法繼續複製。 | 如果複製程序暫停時間過長,導致記錄位置遺失,就可能發生這項錯誤。請勿將串流暫停的時間長度接近記錄保留期限。重新建立串流。 |
記錄檔遺失 (部分或全部)。 | 記錄檔可能已遭刪除。除非您指定最短輪替週期來保留記錄檔,否則 Oracle 會在記錄檔可刪除時立即清除。在 Oracle 伺服器中,設定記錄檔的保留時間。舉例來說,使用
如為 RDS 部署項目,請使用 |
排除清單包含納入清單。 | 納入清單的內容全都在排除清單中,因此 Datastream 從來源提取的物件清單空白。請修改物件選項,然後再試一次。 |
Oracle 資料庫的記錄模式未設為 ARCHIVELOG。 | 請變更記錄模式,然後再試一次。 |
資料串傳回 ORA-00942: table or view does not exist 錯誤訊息,但所有設定都正確無誤。 |
這可能是 Oracle 伺服器快取所致。重新建立資料庫使用者應可修正快取問題。 |
如果串流已在執行中,對 Oracle 來源所做的變更不會反映在目的地中。 | 如果您使用 LogMiner 做為 CDC 方法,Datastream 會從封存的重做記錄檔讀取資料。在這種情況下,您對來源所做的變更不會反映在目的地,直到記錄封存為止。如要查看目的地中的變更,請將 CDC 方法變更為二進位記錄讀取器、變更記錄歸檔政策,或手動強制切換記錄。詳情請參閱「使用 Oracle 資料庫的重做記錄檔」。 |
Oracle CDC 設定驗證失敗。 | 您選取的 CDC 方法與來源資料庫設定不符。選取其他方法,或完成 CDC 方法的設定。詳情請參閱「設定 Oracle 來源資料庫」。 |
發生未預期的內部錯誤。 | 詳情請洽詢 Google 支援團隊。 |
MySQL 錯誤
錯誤 | 疑難排解步驟 |
---|---|
來源資料庫的二進位記錄檔設定有誤。 | 如果來源資料庫的二進位記錄檔設定有誤,持續性 MySQL 資料串流就可能發生這種情況。如要排解這項錯誤,請執行下列操作:
|
由於 binlog 位置遺失,因此無法繼續複製作業。 | 如果複製程序暫停時間過長,導致二進位記錄檔位置遺失,就可能發生這項錯誤。串流不應暫停一段時間,以免接近 binlog 保留期限。重新建立串流。 |
來源資料庫和目的地版本不相容,因此無法執行串流。 | 如果來源資料庫不符合版本支援矩陣,就可能發生這種情況。如要排解這項錯誤,請執行下列操作:
|
AWS RDS MySQL 來源二進位記錄檔部分或全部遺失。 | 二進位記錄檔可能已遭刪除。除非您指定最短輪替週期來保留 binlog,否則 AWS RDS 會在 binlog 可刪除時立即清除。在來源 AWS RDS MySQL 執行個體中,以小時為單位設定二進位記錄的保留時間。舉例來說,使用
mysql.rds_set_configuration('binlog retention hours', 168);
可將二進位記錄保留至少 7 天。 |
排除清單包含納入清單。 | 納入清單的內容全都在排除清單中,因此 Datastream 從來源提取的物件清單空白。請修改物件選項,然後再試一次。 |
Datastream 無法複製 MySQL 資料庫。 | 請確認 Datastream 具備資料庫的複製權限。 |
為 MySQL 來源建立連線設定檔時,「加密類型」選單不接受多個 PEM 編碼的 SSL 憑證。 | Datastream 不支援 MySQL 連線設定檔中的 SSL 憑證鏈。系統僅支援單一的 x509 PEM 編碼憑證。 |
從 MySQL 來源串流資料時延遲時間較長。 | 提高 Datastream 從來源資料庫讀取資料的能力:
|
MySQL 變更資料擷取設定驗證失敗。 | 來源資料庫未針對所選的 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 方法,然後再試一次。 |
Salesforce 錯誤
錯誤 | 疑難排解步驟 |
---|---|
您的權限不足。 | 您設定用來驗證 Salesforce 組織與 Datastream 之間連線的連結應用程式或外部用戶端應用程式使用者,沒有足夠的權限來存取要複製的資料。請確認您已正確設定 Salesforce 來源。詳情請參閱「設定 Salesforce 來源」。 |
Bulk API 2.0 已停用。 | Performance、Unlimited、Enterprise 和 Developer 版本預設會啟用 Bulk API 2.0。這則錯誤訊息表示您使用的版本已停用 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 支援團隊聯絡。 |
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 的來源資料表主鍵定義:
|
後續步驟
- 如要瞭解如何找出串流的潛在問題,請參閱「排解串流問題」。
- 如要瞭解如何設定來源資料庫,請參閱「來源」。
- 如要瞭解如何設定 BigQuery 或 Cloud Storage 目的地,請參閱「目的地」一文。