Sql-Server

由於 AlwaysOn BACKUP 數據不可用,AWS DMS 任務在完成後失敗並出現錯誤

  • March 12, 2021

我創建了 DMS 任務,用於將數據從一個 RDS MS SQL Server 實例遷移到另一個 RDS MS SQL Server 實例,並使用“完全載入 + 持續複製”,並將數據複製到目標實例,但狀態顯示為失敗並出現以下錯誤 -

Last Error AlwaysOn BACKUP-ed 數據不可用 從子任務 0 執行緒 0 收到任務錯誤通知

$$ reptask/replicationtask.c:2822 $$ $$ 1020465 $$執行源循環出錯;流組件在子任務 0 處失敗,組件 st_0_NJZW5VSVPASASA4E4N2SJGTVEZ3UIDLJHX3NDY;流組件“st_0_NJZW5VSVASASAZ4E4N2SJGTVEZ3UIDLJHX3NDY”已終止 $$ reptask/replicationtask.c:2829 $$ $$ 1020465 $$停止原因 FATAL_ERROR 錯誤級別 FATAL

雲觀察日誌:

2021-01-04T15:24:02

$$ SOURCE_CAPTURE $$E: 由於 BACKUP/LOG-s 不可用,無法訪問備份日誌集中的 LSN ‘0000009a:00000087:0010’。$$ 1020465 $$ (sqlserver_endpoint_capture.c:717) 2021-01-04T15:24:02$$ TASK_MANAGER $$I:任務 - PHTLF2WXLFVWESX4GLZ2CKAW3MY76HLRXHIYYYY 處於 ERROR 狀態,將啟動狀態更新為 AR_NOT_APPLICABLE (repository.c:5103) 2021-01-04T15:24:02$$ SOURCE_CAPTURE $$E: 執行源循環出錯$$ 1020465 $$ (streamcomponent.c:1867) 2021-01-04T15:24:02$$ TASK_MANAGER $$E:流組件在子任務 0 處失敗,組件 st_0_NJZW5VSVPJVW47Z4E4N2SJGTVEZ3UIDLJHX3YYY$$ 1020465 $$ (subtask.c:1409) 2021-01-04T15:24:02$$ SOURCE_CAPTURE $$E:流組件“st_0_NJZW5VSVPJVW47Z4E4N2SJGTVEZ3UIDLJHX3YYY”終止$$ 1020465 $$ (subtask.c:1578) 2021-01-04T15:24:02$$ TASK_MANAGER $$E:從子任務 0 執行緒 0 收到任務錯誤通知$$ 1020465 $$ (replicationtask.c:2822) 2021-01-04T15:24:02$$ TASK_MANAGER $$E:執行源循環出錯;流組件在子任務 0 處失敗,組件 st_0_NJZW5VSVPJVW47Z4E4N2SJGTVEZ3UIDLJHX3YYY;流組件“st_0_NJZW5VSVPJVW47Z4E4N2SJGTVEZ3UIDLJHX3YYY”已終止$$ 1020465 $$ (replicationtask.c:2829) 2021-01-04T15:24:02$$ TASK_MANAGER $$E: 任務 ‘PHTLF2WXLFVWESX4GLZ2CKAW3MY76HLRXHIYYYY’ 遇到致命錯誤 (repository.c:5196)

問題是什麼?有什麼建議麼!

我不知道你是否還在解決這個問題,但我想為其他人發布問題和解決方案。

使用 RDS SQL Server 作為源終端節點時,AWS DMS 複製引擎版本 3.4.3 中存在一個錯誤,其中用於使用 RDS 進行時間點恢復的 5 分鐘日誌備份會中斷 CDC 程序。解決方案/解決方法是在複製實例上使用不同的複制引擎版本集,例如 v3.4.2。

來自 AWS 支持:

根本原因:

在內部研究中,我發現此錯誤是執行版本 3.4.3 的 DMS 複製實例的一個已知問題,其中 RDS SQL Server 已截斷活動事務日誌 (TLOG) 或數據庫中沒有活動。這是使用 RDS SQL Server 作為源時的已知情況。

為什麼任務失敗:

由於源 RDS SQL Sever 數據庫中缺少 LSN,DMS 3.4.3 任務失敗,當源 SQL Server MS-CDC 啟用的表長時間保持空閒時,即使您增加 MS-CDC 輪詢,DMS 任務仍然失敗源數據庫上的時間間隔。

這是因為 MS-CDC 輪詢間隔僅在源表發生更改時防止 TLOG 截斷,如果源表保持空閒,LSN 不會增加,然後 RDS t-log 備份作業會從線上 t-log 中刪除 LSN DMS 需要,導致此問題。

此外,DMS 任務因誤導性錯誤而失敗,例如:

00016458: 2020-12-28T09:30:08

$$ SOURCE CAPTURE $$E: 由於 BACKUP/LOG-s 不可用,無法訪問備份日誌集中的 LSN ‘00001002:0001c389:0003’。$$ 1020465 $$(sqlserverendpoint_capture.c:717 即使將 MS-CDC 輪詢間隔設置為足夠的值,此錯誤仍然會發生,當 RDS t-log 備份作業從線上 t-log 中刪除 LSN 時會發生此錯誤。這個問題在流量較少的數據庫中尤其明顯,因為 LSN 沒有增加,並且 DMS 正在查看最後送出的 LSN。

解決方法:

我建議嘗試通過使用 DMS RI 版本 3.4.2 或 3.3.4 創建類似任務來遷移相同的表

DMS 使用日誌備份或 ldf 文件。

E: 由於 BACKUP/LOG-s 不可用,無法訪問備份日誌集中的 LSN ‘0000009a:00000087:0010’。

根據日誌所說,您的日誌備份可能已被刪除或從被刪除的位置移動。DMS 在您的備份中沒有找到 LSN,所以它不會繼續,因為日誌備份有一個鏈。

如果有,您可以增加日誌備份的保留期。

SELECT 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_start_date, 
msdb.dbo.backupset.backup_finish_date, 
CASE msdb..backupset.type 
WHEN 'D' THEN 'Database' 
WHEN 'L' THEN 'Log' 
END AS backup_type, 
msdb.dbo.backupset.backup_size, 
msdb.dbo.backupmediafamily.logical_device_name, 
msdb.dbo.backupmediafamily.physical_device_name
FROM msdb.dbo.backupmediafamily 
INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id 
WHERE (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7) 
ORDER BY 
msdb.dbo.backupset.database_name, 
msdb.dbo.backupset.backup_finish_date 

您可以使用上面的腳本檢查您的日誌備份,並在物理設備上檢查您的日誌備份是否存在。

引用自:https://dba.stackexchange.com/questions/282508