診斷問題

如果串流在 Datastream 中發生執行階段錯誤,您可以在 Google Cloud 控制台的「Streams」(串流) 或「Stream details」(串流詳細資料) 頁面查看詳細資料。您也可以使用 Datastream API 擷取診斷資訊。部分問題 (例如密碼無效) 可以復原,修正後就會自動繼續複製。其他錯誤會影響單一物件 (例如不支援的資料類型),或在 Datastream 無法連線至來源時停止串流。

如要排解問題,請查看錯誤訊息,並按照設定、連線、來源或 BigQuery 目的地錯誤的步驟操作。

設定和連線能力錯誤

錯誤 疑難排解步驟
無法連線至來源資料庫 (一般)。

造成這種情況的原因有很多,如何排解這項錯誤:

  1. 確認來源資料庫已啟動且可連線。
  2. 從「Streams」(串流) 或「Connection profiles」(連線設定檔) 頁面,前往來源連線設定檔。
  3. 確認連線設定檔的連線資訊正確無誤。
  4. 確認使用者名稱和密碼相符。
  5. 請確認資料庫中存在該使用者名稱,且具備必要權限。
  6. 儲存您在「Connection profiles」(連線設定檔) 頁面所做的變更。

直播會自動恢復。

無法連線至來源資料庫 (IP 許可清單)。 如果選擇的連線方式是「IP 許可清單」,但來源資料庫未正確新增一或多個 Datastream 傳出 IP 位址,就可能發生這種情況。請務必在網路防火牆設定 Datastream 連線設定檔中顯示的傳出 IP 位址,讓來源資料庫伺服器接受來自這些 IP 位址的連線。問題解決後,直播就會自動恢復。
無法連線至來源資料庫 (轉送 SSH 通道)。 如果轉送 SSH 通道發生問題,就可能發生這種情況。檢查通道狀態。如果通道已停止,則必須啟動。問題解決後,直播就會自動恢復。
Datastream 無法透過轉送 SSH 通道連線至堡壘主機。 請確定已在來源連線設定檔中正確設定轉送 SSH 通道,而且 SSH 通道伺服器的通訊埠已開放。
憑證有誤,無法連線至來源資料庫。 如果定義來源連線設定檔時提供的憑證有問題,就可能發生這種情況。前往「Connection profiles」(連線設定檔) 頁面,然後選取指定的連線設定檔。確認憑證設定正確無誤。完成變更後,請儲存連線設定檔,串流就會自動恢復。
無法使用私人連線連至來源資料庫。 這項錯誤與虛擬私有雲對等互連私人連線方法有關。
  1. 請確認您已完成所有虛擬私有雲對接必要條件。
  2. 建立私人連線設定後,請確認「虛擬私有雲網路對等互連」頁面的「匯出的路徑」分頁中,顯示包含資料庫內部 IP 位址的路徑。

    如要執行這項操作,請前往「VPC Network Peering」(虛擬私有雲網路對等互連) 頁面,然後搜尋新增的對等互連 (名稱為 peering-[UUID])。您可以在「Exported routes」(匯出的路徑) 分頁中找到該路徑。如果沒有這項路徑,請手動新增。

  3. Datastream 不會檢查是否與動態對等互連路徑重疊。如果提供的子網路與動態路由重疊,可能會導致連線問題。因此,我們不建議使用屬於動態路徑的子網路。
  4. 請確認 Datastream IP 位址範圍的自訂路由已正確 advertise。如果缺少自訂路由,請參閱「自訂 advertise 路由」。
  5. 如果連線至來源資料庫時仍發生問題,請參閱「設定反向 Proxy」。
無法使用 Private Service Connect 介面連線至來源資料庫。
  1. 確認您已完成所有必要條件。
  2. 請確認防火牆規則允許所提供網路連結的子網路連至來源資料庫。
  3. 請確認 Datastream IP 位址範圍的自訂路由已正確 advertise。如果缺少自訂路由,請參閱「自訂 advertise 路由」。
啟用組織政策限制/datastream.disablePublicConnectivity 時,不允許使用 STATIC_SERVICE_IP_CONNECTIVITY 連線類型。

您為建立中的連線設定檔,選取了公開 IP 允許清單或轉送 SSH 通道網路連線方法。不過,Datastream 的「封鎖公開連線方法」組織政策已啟用。因此,您無法為連線設定檔選取公開連線方法。

如要解決這個問題,請選取私人虛擬私有雲對等互連或 Private Service Connect 介面網路連線方法,或停用組織政策。

如要停用組織政策,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Organization policies」(組織政策) 頁面。
  2. 選取「Datastream - Block Public Connectivity Methods」(Datastream - 封鎖公開連線方法) 組織政策。
  3. 點選「編輯」。

  4. 在頁面的「Applies to」(套用對象) 部分,選取「Customize」(自訂)。
  5. 在「強制執行」部分,選取「關閉」。

  6. 按一下 [儲存]。
  7. 返回正在建立的 Oracle 連線設定檔,然後按一下「建立」。
為串流設定來源資料庫時,在要納入的物件清單中,找不到要移轉的資料表和結構定義。

如果資料庫有數千個資料表和結構定義,就可能發生這種情況。在 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 可能會在串流期間捨棄不支援的事件。您可以採取下列行動來解決問題:

  • 手動觸發整份資料表的補充作業。如果捨棄的事件只有 UPSERT 事件,這個方法就有效。如果捨棄的事件包含 DELETE 事件,則必須先在 BigQuery 中截斷資料表,再執行補充作業。

    如要瞭解如何執行補充,請參閱「啟動補充」。

  • 請與 Google 支援團隊聯絡,要求他們執行部分補播。只有在您可以使用 SQL WHERE 子句識別捨棄的事件,且沒有任何事件是 DELETE 事件時,才能執行這項操作。
  • 如果捨棄的事件數量很少或不重要,請忽略這個問題。
嘗試連線至資料來源時逾時。請確認主機名稱和通訊埠設定正確無誤,且資料來源可供存取。 使用虛擬私有雲對接時,Datastream 網路無法直接與私人服務網路 (例如 Cloud SQL 執行個體) 對接,因此您必須使用網路位址轉譯 (NAT) VM,在 Datastream 和資源之間建立連線。如要進一步瞭解如何設定網路位址轉譯 VM,請參閱「設定虛擬私有雲對接」。
物件「OBJECT_NAME」的結構定義過大,Datastream 無法處理。 Datastream 不支援複製對應來源結構定義超過 2,621,440 個 Unicode 字元的事件。系統會捨棄這些事件,並顯示下列原因代碼:UNSUPPORTED_LARGE_SCHEMA。您可能需要排除或重新命名部分資料欄。或者,您也可以排除結構定義過大的物件。
串流狀態已變更。 雖然造成這項錯誤的原因可能不只一個,但常見的根本問題是來源設定無效。如果串流因這則錯誤訊息而無法啟動,請檢查來源設定是否有重複的金鑰或資料表名稱、資料不一致或結構定義衝突。許多問題都能解決,只要直接在 Google Cloud 控制台編輯失敗的串流設定,並調整納入和排除物件的項目即可。詳情請參閱「修改來源資料庫的設定資訊」。

Oracle 錯誤

錯誤 疑難排解步驟
來源資料庫的增補記錄設定有誤。

如果來源資料庫的補充記錄設定不正確,擷取進行中的變更資料擷取 (CDC) 資料時可能會發生錯誤。確認補充記錄設定正確無誤。具體來說,請確認從來源串流至目的地的資料庫資料表已啟用補充記錄功能。直播會自動恢復。

記錄位置遺失,因此無法繼續複製。 如果複製程序長時間暫停,導致記錄位置遺失,就可能發生這項錯誤。串流暫停的時間不應接近記錄檔保留期限。重新建立串流。
記錄檔部分或全部遺失。

記錄檔可能已刪除。除非您指定最短輪替週期來保留記錄檔,否則 Oracle 會盡快清除記錄檔。在 Oracle 伺服器中,設定記錄檔的保留時間。例如,使用 CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS; 可將記錄檔保留至少 4 天。

如為 RDS 部署項目,請使用 exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);

排除清單會涵蓋納入清單。 納入清單完全包含在排除清單中,因此 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 連續串流就可能發生這種情況。如要排解這項錯誤,請執行下列操作:

  1. 確認二進位記錄檔設定正確無誤。
  2. 確認 MySQL 資料庫的二進位記錄格式設為 ROW。
  3. 重新啟動串流。
二進位記錄位置遺失,因此無法繼續複製。 如果複製程序長時間暫停,導致二進位記錄檔位置遺失,就可能發生這項錯誤。串流暫停的時間不應接近二進位記錄保留期限。重新建立串流。
來源資料庫和目的地版本不相容,因此無法執行串流。

如果來源資料庫不符合版本支援矩陣,就可能發生這種情況。如要排解這項錯誤,請執行下列操作:

  1. 請確認來源資料庫符合矩陣規定。
  2. 使用更新後的來源資料庫重新建立串流。
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 限制,導致錯誤。如要解決問題,請完成下列步驟:
  1. 將副本身分變更為 DEFAULT:
    ALTER TABLE TABLE_NAME REPLICA IDENTITY DEFAULT
    將 TABLE_NAME 替換為要變更副本身分資料的資料表名稱。
  2. 請從串流的納入物件清單中移除該資料表,詳情請參閱「修改來源資料庫的設定資訊」。
  3. 從 BigQuery 刪除資料表。詳情請參閱「刪除資料表」。
  4. 在 Datastream 中,編輯來源設定,再次將資料表新增至串流。
發生未預期的內部錯誤。 如要瞭解詳情,請與 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,或您使用的憑證權限不足。確認您使用的使用者個人資料已獲派 API Enabled 權限。

超出上限。

您已超出 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 中顯示為個別資料列。
在「僅附加」寫入模式下執行補充作業時,資料會重複。

如果為串流選取「僅附加」寫入模式,資料會以 INSERT、UPDATE-INSERT、UPDATE-DELETE 和 DELETE 事件串流的形式附加至 BigQuery,不會進行任何整併。執行補充作業時,或發生問題且 BigQuery 寫入器重試寫入作業時,這可能會導致重複的資料列寫入 BigQuery。為解決這個問題,建議您定期執行類似下方的去重複查詢:

SELECT * FROM (SELECT *, row_number() OVER (PARTITION BY datastream_metadata.uuid) AS num FROM TABLE_NAME) WHERE num=1
Datastream 已設為合併寫入模式,但變更未在 BigQuery 中合併。

確認來源資料表中有主鍵。BigQuery 需要這項資訊,才能將變更合併至目的地資料表。

如果沒有主鍵,請考慮在來源或目的地資料表中新增主鍵。如要在目的地 BigQuery 資料表中新增主鍵,請按照下列步驟操作:

  1. 暫停串流。
  2. 在 BigQuery 中截斷資料表。
  3. 在資料表定義中新增主鍵。
  4. 繼續串流。
  5. 觸發資料表的補充作業。
無法為已複製到 BigQuery 的資料表新增主鍵、移除主鍵或變更主鍵定義。

根據預設,Datastream 不支援在已複製到 BigQuery 的資料表中新增主鍵 (如果資料表沒有主鍵),也不支援從已複製到 BigQuery 的資料表中移除主鍵 (如果資料表有主鍵)。不過,您可以變更已複製到 BigQuery 且已有主鍵的來源資料表主鍵定義:

  1. 查看串流的總延遲時間指標,並等待至少與目前延遲時間相同的時間,確保所有傳輸中的事件都寫入目的地。這樣一來,所有具有原始主鍵的事件都能成功串流。
  2. 暫停串流。
  3. 複製 BigQuery 中資料表的 CREATE TABLE 資料定義語言 (DDL) 指令:
        SELECT ddl FROM PROJECT_ID.DATASET.INFORMATION_SCHEMA.TABLES
          WHERE table_name='TABLE_NAME';

    更改下列內容:

    • PROJECT_ID: Google Cloud 專案的 ID。
    • DATASET_ID:BigQuery 資料集的 ID。
    • TABLE_NAME:要複製 DDL 指令的資料表名稱。
  4. 在 BigQuery 中捨棄資料表。
  5. 使用新的主鍵調整 CREATE TABLE DDL 指令。加入分區和叢集鍵,以及 max_staleness OPTION:
        CREATE TABLE `[PROJECT_ID].[DATASET_ID].[TABLE_NAME]`
        (
          product_id INT64 NOT NULL,
          product_name STRING,
          datastream_metadata STRUCT,
          PRIMARY KEY (product_id) NOT ENFORCED
        )
        CLUSTER BY dept_no
        OPTIONS(
          max_staleness=INTERVAL '0-0 0 0:MINS:0' YEAR TO SECOND
        );
        ;
        

    更改下列內容:

    • PROJECT_ID: Google Cloud 專案的 ID。
    • DATASET_ID:BigQuery 資料集的 ID。
    • TABLE_NAME:您複製 DDL 指令的資料表名稱。
    • MINS:要為 max_staleness 選項設定的分鐘數,例如 15。
  6. 執行調整後的查詢,在 BigQuery 中重新建立資料表。
  7. 繼續串流。
  8. 啟動資料表的補充作業。

後續步驟

  • 如要瞭解如何找出串流的潛在問題,請參閱「排解串流問題」。
  • 如要瞭解如何設定來源資料庫,請參閱「來源」。
  • 如要瞭解如何設定 BigQuery 或 Cloud Storage 目的地,請參閱「目的地」。