SQL伺服器端點疑難 - AWS 資料庫遷移服務

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

SQL伺服器端點疑難

本節包含SQL伺服器特定的複寫案例。判斷要從SQL伺服器複寫哪些變更會 AWS DMS 讀取交易記錄檔,並在來源資料庫上執行定期掃描。複寫延遲通常是由於資源限制,因此SQL伺服器限制這些掃描所造成。這也可能是因為在短時間內寫入交易日誌的事件數目大幅增加所致。

索引重建

當SQL服務器重建一個大的索引,它使用一個單一的事務。這會產生很多事件,如果 SQL Server 一次重建多個索引,則可能會使用大量的記錄檔空間。發生這種狀況時,您可能會預期短暫的複寫峰值。如果您的SQL伺服器來源有持續的記錄峰值,請檢查下列項目:

  • 首先,使用CDCLatencySourceCDCLatencySource CloudWatch 指標,或檢查工作記錄中的輸送量監控訊息,來檢查延遲尖峰的期間。如需有關 CloudWatch 測量結果的資訊 AWS DMS,請參閱複寫任務指標

  • 檢查作用中交易日誌或日誌備份的大小是否在延時峰值期間增加。同時檢查在該期間維護任務或重建是否會執行。如需有關檢查交易記錄檔大小的資訊,請參閱SQL伺服器技術文件中的監控記錄空間使用情況

  • 確認您的維護計畫遵循SQL伺服器最佳作法。如需SQL伺服器維護最佳作法的相關資訊,請參閱SQL伺服器技術文件中的索引維護策略

若要修正索引重建立期間的延時問題,請嘗試下列方法:

  • 使用 BULK_LOGGED 復原模型進行離線重建,以減少任務必須處理的事件。

  • 如果可能,請在索引重建期間停止任務。或者,嘗試在非尖峰時段安排索引重建時程,以減輕延時峰值的影響。

  • 嘗試識別拖慢DMS讀取速度的資源瓶頸,例如磁碟延遲或 I/O 輸送量,並加以解決。

大型交易

具有大量事件的交易或長時間執行交易會造成交易日誌增長。這會導致DMS讀取需要更長的時間,從而導致延遲。這類似於索引重建對複寫效能的影響。

如果您不熟悉來源資料庫上的一般工作負載,就可能無法辨識這個問題。若要針對這個錯誤進行疑難排解,請執行以下動作:

若要解決此問題,請執行下列動作:

  • 最好的解決方法是在應用程式端重新建構交易,使其能夠快速完成。

  • 如果您無法重新架構交易,短期的因應措施是檢查資源瓶頸,例如磁碟等待或爭用。CPU如果您在來源資料庫中發現瓶頸,可以透過增加來源資料庫的磁碟和記憶體資源來減少延遲。CPU如此可減少對系統資源的爭用,讓DMS查詢更快完成。

Amazon RDS SQL 服務器配置錯誤的 MS-CDC 輪詢間隔

Amazon RDS 執行個體上設定錯誤的輪詢間隔設定可能會導致交易日誌成長。這是因為複寫會防止日誌截斷。雖然正在執行的工作可能會以最小的延遲繼續複寫,停止和繼續工作,或CDC僅啟動工作,可能會導致工作失敗。這些是因為掃描大型交易日誌時逾時所致。

若要針對設定錯誤的輪詢間隔進行疑難排解,請執行下列動作:

如果您發現上一個清單中的任何項目有問題,請調整 MS-CDC 輪詢間隔。如需調整輪詢間隔的相關資訊,請參閱將SQL伺服器作為來源使用時RDS的建議設定 AWS DMS

從相同來源資料庫複製的多個CDC作業

在完全載入階段,我們建議您在任務間分割資料表以改善效能、以邏輯方式分隔相依資料表,以及減輕任務失敗的影響。但是,在此CDC階段中,我們建議您合併工作以將DMS掃描減至最少。在此CDC階段期間,每DMS項工作會每分鐘掃描幾次交易記錄檔是否有新事件。由於每個任務都是獨立執行,因此每項任務都會分別掃描每個交易日誌。這會增加來源SQL伺服器資料庫的磁碟和CPU使用量。因此,大量並行執 parallel 的工作可能會導致SQL伺服器限制DMS讀取,進而增加延遲。

如果多個任務逐步開始,您可能難以識別此問題。此問題最常見的症狀是大多數任務掃描開始延長耗時。這會導致這些掃描的延時提高。SQL伺服器會排定一些工作掃描的優先順序,因此一些工作會顯示正常的延遲。若要疑難排解此問題,請檢查所有任務的 CDCLatencySource 指標。如果某些工作增加CDCLatencySource,而少數工作較低CDCLatencySource,則SQL伺服器可能正在限制您的某些工作的DMS讀取。

如果SQL伺服器正在限制您的DMS工作讀取期間CDC,請合併工作以將掃描次數降至最低。可以連線到來源資料庫而不產生爭用的任務數目上限,取決於來源資料庫容量、交易日誌成長速率或資料表數目等因素。若要判斷複寫案例的理想任務數目,請在與生產環境類似的測試環境中測試複寫。

SQL伺服器的RDS交易記錄備份處理

AWS DMS 3.5.3 及RDS更高版本支援從SQL伺服器記錄備份進行複製。從RDS執行個體上的備份記錄檔複寫事件比從使用中交易記錄檔複寫事件慢。這是因為DMS請求以序列方式存取備份,以確保其維護交易順序,並將 Amazon RDS 執行個體儲存體填滿的風險降到最低。此外,在 Amazon RDS 結束時,提供備份所RDS需的時間取DMS決於日誌備份的大小以及 SQL Server 執行個體的負載。

由於這些限制,我們建議您將設定ECAActivateSafeguardtrue。這可確保DMS作業從使用中交易記錄檔讀取時,不會備份交易。當從備份讀取交易時DMS,此設定也可以防止 Amazon 在使用中日誌中RDS存檔交易,從而消除了DMS無法 catch 使用中日誌的可能性。請注意,這可能會導致作用中日誌大小在任務趕上時增加。確保您的執行個體有足夠的儲存空間,以防止執行個體空間不足。

對於CDC僅從SQL伺服器來源複製RDS的工作,請盡可能在原生CDC開始時間上使用原生CDC開始位置。這是因為DMS依賴系統資料表來識別原生開始位置的起點,而不是在指定原生開始時間時掃描個別記錄備份。