排解錯誤
遷移作業程序在執行階段可能會發生錯誤。
- 對於部分錯誤,資料庫遷移服務會自動重試有問題的作業,以繼續遷移程序並避免中斷。遷移工作狀態會變更為「執行中 (有錯誤)」。這個狀態表示資料庫遷移服務會繼續遷移資料,不受錯誤影響。
- 部分錯誤無法復原。如果資料庫遷移服務發生無法復原的錯誤,遷移工作狀態會變更為「失敗」。在這種情況下,問題修正後必須重新啟動遷移工作。
如要排解錯誤,請前往受影響的遷移工作,查看錯誤,然後按照錯誤訊息中的步驟操作。您也可以查看 Cloud SQL 目的地執行個體的 Cloud Monitoring 記錄,取得更多詳細資料。使用遷移工作詳細資料頁面上的 Cloud Monitoring 連結。
下表列出一些問題範例,以及解決方法:
| 如果遇到這個問題... | 可能原因如下: | 不如說 |
|---|---|---|
錯誤訊息:The BAK file's database major version number
{backup_version_num} must not be higher than the current database
major version number {your Cloud SQL for SQL Server version number}。 |
您嘗試匯入的備份檔案來自較新版本的 SQL Server,但 SQL Server 適用的 Cloud SQL 目的地執行個體使用的版本較舊。 只有符合跨版本相容性指南的條件,資料庫遷移服務才支援從較舊版本遷移至較新版本。請參閱「 支援的來源和目的地資料庫」。 |
重新建立 SQL Server 適用的 Cloud SQL 目的地執行個體,使用較新的 SQL Server 版本,然後使用新執行個體重試遷移程序。 |
錯誤訊息:
The following database already exists in destination: {database_name}。
|
Cloud SQL 目的地執行個體已包含一個資料庫,該資料庫的名稱與遷移工作中的其中一個資料庫相同。 | 解決命名衝突。請參閱「 Error: database already exists in destination |
錯誤訊息:
Permission denied for {cloudsql.databases.get} on the Database Migration Service service account. |
資料庫遷移服務服務帳戶缺少權限。 | 將缺少的權限新增至 Database Migration Service 服務帳戶。請參閱「 使用 IAM 控管存取權」。 |
錯誤訊息:
Missing WAL file at Log Sequence Number (LSN) {log_number_here} |
交易記錄檔可能使用錯誤的紀元時間戳記,導致更新順序有誤。資料庫遷移服務會使用記錄序號和紀元時間戳記,控管交易記錄檔複製到 Cloud SQL 目的地執行個體的順序。 | 檢查並調整最新交易記錄檔名稱中使用的紀元時間戳記。請參閱 調整錯誤的交易記錄名稱。 |
| 如果您遷移選取的資料庫,但遷移工作無法將資料複製到一或多個資料庫,資料庫清單中就會顯示「失敗」狀態。 | 各種遷移工作錯誤。 | 按一下「錯誤」欄中的「查看錯誤」並修正。修正錯誤後,請按一下「重新啟動」。 |
錯誤:目的地中已有資料庫
您會看到下列錯誤訊息:
The following database already exists in destination: {database_name}。
問題可能出在
Cloud SQL 目的地執行個體已包含一個資料庫,該資料庫使用的名稱與遷移工作中的某個資料庫相同。
建議做法
視遷移情境而定,解決資料庫重複問題的方法也不同。請嘗試下列任一做法:
重新命名來源 Cloud Storage bucket,以不同名稱遷移資料庫。
資料庫遷移服務在目的地 Cloud SQL 執行個體中建立的資料庫名稱,是從 Cloud Storage 中儲存備份檔案的資料夾名稱衍生而來。如果您有兩個名稱相同的資料庫,且都需要遷移至 Cloud SQL 目的地,可以重新命名資料夾並重新建立遷移工作,避免名稱衝突。
請執行下列步驟:
- 為受命名衝突影響的來源資料庫建立新資料夾。請參閱「將備份檔案儲存在 Cloud Storage bucket 」一文。
- 重新建立遷移工作。請參閱「
建立遷移工作」。
您可以為現有的遷移工作新增資料庫,但無法從遷移工作移除資料庫。因此您需要重新建立整個遷移工作。
從 SQL Server 適用的 Cloud SQL 執行個體中捨棄重複的資料庫。
如果 Cloud SQL 目的地執行個體中的資料庫重複,您可以從執行個體中捨棄該資料庫,然後繼續執行遷移工作。詳情請參閱 SQL Server 適用的 Cloud SQL 說明文件中的「Delete a database」(刪除資料庫) 一文。
調整交易記錄檔名稱,解決 WAL 檔案順序錯誤的問題
問題可能出在
交易記錄檔可能使用錯誤的紀元時間戳記,導致更新順序有誤。資料庫遷移服務會使用記錄序號和紀元時間戳記,控管交易記錄檔複製到 Cloud SQL 目的地執行個體的順序。
建議做法
檔案上傳作業可能會延遲或順序有誤。請等待幾分鐘,讓問題解決,或檢查 Cloud Storage bucket 中是否有遺失的檔案。
如果問題仍未解決,請驗證並調整 交易記錄檔名中的紀元時間戳記。
請按照下列步驟操作:
- 在目的地 SQL Server 適用的 Cloud SQL 執行個體上,查看交易記錄匯入作業清單。前往 Google Cloud 控制台的「Cloud SQL Instances」頁面。
- 依序點選「查看所有作業」>「查看 SQL Server 錯誤記錄」。
- 查看交易記錄檔的所有匯入作業,並確認檔案名稱是否包含正確的紀元時間戳記。
- 如果發現最近的交易記錄檔使用名稱時,紀元時間戳記順序有誤,請前往 Cloud Storage bucket 並重新命名檔案。 資料庫遷移服務會自動偵測變更,並嘗試匯入相關交易記錄檔。
- 僅限 Amazon RDS:在匯出至 S3 的過程中,可能遺漏部分交易記錄檔。請嘗試重新執行交易記錄匯出函式,匯出缺少 WAL 檔案前後的資料。