优化网络上传
巨型帧是大于默认 1500 字节的以太网帧。 典型的巨型帧大小为 9000 字节。 增大源数据库服务器、所有中间网络设备(例如交换机)和 Intel R3load 服务器上的帧大小会降低 CPU 消耗并提高网络吞吐量。 所有设备上的帧大小必须相同,否则会发生资源密集型转换。
其他网络功能(例如接收端缩放 (RSS))可以打开或配置为在多个处理器之间分配网络处理。经证实,在 VMware 上运行 R3load 服务器会使巨型帧和 RSS 的网络优化变得更复杂,除非具备专家级的技能水平,否则不建议使用。
R3load 从 DBMS 表导出数据,并在转储文件中压缩这种与格式无关的原始数据。 需将这些转储文件上传到 Azure,并将其导入到目标 SQL Server 数据库。
将这些转储文件复制并上传到 Azure 的性能是整个迁移过程中的关键要素。
可通过基本方法上传 R3load 转储文件:
使用 AzCopy 通过公共 Internet 从本地 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,但你可以手动将此值设置得更高或更低:
操作系统 | 命令 |
---|---|
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,而不要设置特定的数字。 AUTO 值会让 AzCopy 始终运行它在基准测试中使用的自动优化过程。
如果客户的服务器非常强大并且 Internet 速度很快,则可以增大并发值。 如果并发值太高,与 R3load 导出服务器的连接将由于网络饱和而断开。 在 Windows 任务管理器中监视网络吞吐量。 可以在每台 R3load 导出服务器上轻松实现每秒 1 Gb 以上的复制吞吐量。 添加更多 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 等机制那样快速或可靠。 建议测试这两种文件上传技术的性能。 建议通知 VLDB 迁移项目的 Microsoft 支持人员,因为吞吐量很高的网络操作可能会被错误地识别为拒绝服务攻击。