最佳化網路上傳
大型訊框是大於預設 1500 個位元組的乙太網路訊框。 一般大型訊框大小為 9000 個位元組。 增加來源資料庫伺服器、交換器等所有中繼網路裝置及 Intel R3load 伺服器上的訊框大小,可減少 CPU 使用量並增加網路輸送量。 訊框大小在所有裝置上都必須相同,否則會發生使用大量資源的轉換。
您可以開啟或設定其他網路功能,例如接收端調整 (RSS),將網路處理分散到多個處理器。VMware 上執行中的 R3load 伺服器已證明讓大型訊框和 RSS 的網路微調變得更複雜,除非具非常專業的技能等級,否則不建議使用。
R3load 會從 DBMS 資料表匯出資料,並在傾印檔案中壓縮此與原始格式無關的資料。 這些傾印檔案必須上傳至 Azure,並匯入目標 SQL Server 資料庫。
這些傾印檔案複製和上傳至 Azure 的效能,是整體移轉流程中的重要元素。
上傳 R3load 傾印檔案有兩種基本方式:
使用 AzCopy,透過公用網際網路,從內部部署 R3load 匯出伺服器複製到 Azure Blob 儲存體
在每個 R3load 伺服器上,使用以下命令列執行 AzCopy 的複本:
Azcopy copy "C:\ExportServer_1\Dumpfiles" "https://[storage_account].blob.core.windows.net/ExportServer_1/Dumpfiles?[SAS_Token]" --recursive
您可以設定 AZCOPY_CONCURRENCY_VALUE 環境變數,增加輸送量。 此變數會指定可發生的並行要求數。
如果電腦的 CPU 少於 5 個,則此變數的 [value] 會設定為 32。 否則,預設值會等於 16 乘以 CPU 數目。 此變數的預設值上限為 300,但您可以手動將此值設定為更高或更低:
作業系統 | Command |
---|---|
Windows | set AZCOPY_CONCURRENCY_VALUE=[value] |
Linux | export AZCOPY_CONCURRENCY_VALUE=[value] |
macOS | export AZCOPY_CONCURRENCY_VALUE=[value] |
使用 azcopy env 檢查 AZCOPY_CONCURRENCY_VALUE 環境變數目前的值。 如果值為空白,您可以查看任一 AzCopy 記錄檔的開頭,讀取正在使用的值。 選取的值及選取的原因會在該處回報。
設定並行值之前,請先執行基準測試。 基準測試流程會回報建議的並行值。 或者,如果您的網路條件和承載會變化,請將此變數設定為 AUTO 一詞,而不是特定數字。 「自動」值會讓 AzCopy 一律執行在基準測試中使用的相同自動微調流程。
如果客戶有強大的伺服器和快速的網際網路,可以提升並行值。 如果並行值提升過高,與 R3load 匯出伺服器的連線會因為網路飽和而遺失。 監視 Windows 工作管理員中的網路輸送量。 每個 R3load 匯出伺服器每秒超過 1 Gigabit 的複製輸送量可輕鬆達成。 複製輸送量可藉由擁有更多 R3load 伺服器 (上圖中描述四個) 來擴大。
類似指令碼必須在 Azure 中的 R3load 匯入伺服器上執行,才能將檔案從 Blob 複製到 R3load 可存取的檔案系統。
透過使用 AzCopy、Robocopy 或類似工具的 ExpressRoute 專屬連線,從內部部署 R3load 匯出伺服器複製至 Azure 虛擬機器或 Blob 儲存體
Robocopy C:\Export1\Dump1 \\az_imp1\Dump1 /MIR /XF *.SGN /R:20 /V /S /Z /J /MT:8 /MON:1 /TEE /UNILOG+:C:\Export1\Robo1.Log
下列方塊圖說明執行 R3load 的四個 Intel R3load 伺服器。 在背景中,Robocopy 會開始上傳傾印檔案。 整個分割資料表和套件完成時,SGN 檔案會手動或透過指令碼複製。 套件的 SGN 檔案抵達匯入 R3load 伺服器時,它會自動觸發匯入此套件。
注意
透過 NFS 或 Windows SMB 通訊協定複製檔案,不像 AzCopy 等機制一樣快速或強固。 建議測試這兩種檔案上傳技術的效能。 建議通知 Microsoft 支援服務以進行 VLDB 移轉專案,因為輸送量非常高的網路作業可能會誤判為拒絕服務的攻擊。