Infrastructure Requirements Guide

Endrias Bridge

Detailed infrastructure specifications for deploying Endrias Bridge in large-scale environments — covering sizing tiers from small databases up to multi-terabyte migrations on AWS RDS and Azure SQL.

💾 Focus: 100 GB – multi-TB databases Targets: AWS RDS, Azure SQL 💻 Host: Windows Server 2019/2022 📄 Revised: June 2026

📊 Sizing Tiers Overview

Endrias Bridge categorizes source databases into four sizing tiers. Each tier drives host sizing, network bandwidth requirements, batch configuration, and estimated migration windows. Run the built-in DB Sizing Scan before planning any migration to confirm the correct tier.

Tier Database Size Row Volume (est.) Recommended Host RAM Min. Network Est. Migration Window
Small < 10 GB < 50 M rows 8 GB 100 Mbps < 1 hour
Medium 10 – 100 GB 50 M – 500 M rows 16 GB 1 Gbps 1 – 8 hours
Large 100 GB – 1 TB 500 M – 5 B rows 32 – 64 GB 10 Gbps 8 – 48 hours
Extra-Large 1 TB+ 5 B+ rows 64 – 128 GB 10 Gbps (25 Gbps ideal) 48 hours – 2 weeks
⚠️
Migration window estimates assume: batch size tuned per tier, target indexes disabled during load, bulk-logged recovery model active on SQL Server sources, and a low-latency (<5 ms) private network path between migration host and both endpoints. Public internet paths will significantly increase migration time.

🔧 Per-Tier Specifications

Detailed hardware and infrastructure specifications for each sizing tier.

Small Tier
< 10 GB
CPU
4 cores, 2.5 GHz+
RAM — Minimum
8 GB
RAM — Recommended
16 GB
Network Bandwidth
100 Mbps (1 Gbps preferred)
Disk I/O (Migration Host)
3,000 IOPS, 50 GB free temp space
Source → Host Latency
< 20 ms acceptable
Host → Target Latency
< 20 ms acceptable
Estimated Window: Under 1 hour at full network speed
Medium Tier
10 – 100 GB
CPU
4 – 8 cores, 2.5 GHz+
RAM — Minimum
16 GB
RAM — Recommended
32 GB
Network Bandwidth
1 Gbps
Disk I/O (Migration Host)
5,000 IOPS, 100 GB free temp space
Source → Host Latency
< 10 ms ideal, < 20 ms max
Host → Target Latency
< 10 ms ideal, < 20 ms max
Estimated Window: 1 – 8 hours
Large Tier
100 GB – 1 TB
CPU
8 – 16 cores, 3.0 GHz+
RAM — Minimum
32 GB
RAM — Recommended
64 GB
Network Bandwidth
10 Gbps required
Disk I/O (Migration Host)
10,000 IOPS, 500 GB free temp space
Source → Host Latency
< 5 ms ideal, < 20 ms max
Host → Target Latency
< 5 ms ideal, < 20 ms max
Estimated Window: 8 – 48 hours
Extra-Large Tier
1 TB+
CPU
16 – 32 cores, 3.0 GHz+
RAM — Minimum
64 GB
RAM — Recommended
128 GB
Network Bandwidth
10 – 25 Gbps required
Disk I/O (Migration Host)
20,000+ IOPS, 2 TB free temp space
Source → Host Latency
< 5 ms (dedicated private link)
Host → Target Latency
< 5 ms (same AZ/region)
Estimated Window: 48 hours – 2 weeks (consider S3/Blob staging)
💡
For Extra-Large migrations, consider using S3 staging (AWS) or Azure Blob staging to break the migration into independently resumable chunks. Endrias Bridge supports staged file-based transfers as of v2.3.

🏠 Windows Host Requirements

The migration host is the Windows machine that runs Endrias Bridge. It acts as the orchestration layer — reading from the source database, transforming data, and writing to the target. This host must have stable, low-latency connectivity to both the source and the target simultaneously.

Operating System

CPU Requirements

TierMinimum CoresRecommended CoresClock SpeedNotes
Small442.5 GHz+Single parallel worker
Medium482.5 GHz+2 – 4 parallel workers
Large8163.0 GHz+4 – 8 parallel workers; hyperthreading ON
Extra-Large16323.0 GHz+8 – 16 parallel workers; NUMA-aware preferred

RAM Requirements

Batch size directly scales with available RAM. Endrias Bridge holds one or more batches in memory per parallel worker simultaneously — under-provisioned RAM causes excessive swap, which is the single most common cause of Large-tier migration timeouts.

TierMinimum RAMRecommended RAMWhy
Small8 GB16 GBDefault batch (10 K rows) fits easily
Medium16 GB32 GB50 K-row batches × 2 – 4 workers
Large32 GB64 GB100 K-row batches × 4 – 8 workers
Extra-Large64 GB128 GB250 K-row batches × 8 – 16 workers

Disk Requirements

ComponentSmallMediumLargeExtra-Large
Temp/Staging Space 20 GB free 100 GB free 500 GB free 2 TB+ free
Log File Space 5 GB 10 GB 50 GB 200 GB
Disk IOPS 3,000 5,000 10,000 20,000+
Recommended Disk Type SSD (any) NVMe SSD NVMe SSD (RAID-0 for staging) NVMe SSD array or instance storage

📦 Software Dependencies

The Endrias Bridge installer bundles most dependencies. The following table shows what is included versus what must be pre-installed on the migration host.

DependencyVersionBundled?Notes
Python 3.11+ Bundled Embedded distribution; does not interfere with system Python
ODBC Driver for SQL Server 18 (MSODBCSQL18) Bundled Required for SQL Server and Azure SQL sources/targets
MySQL Connector/ODBC 8.3+ Bundled Required for MySQL source connections
PostgreSQL psycopg2 2.9+ Bundled Required for PostgreSQL / Azure PostgreSQL targets
Visual C++ Redistributable 2015 – 2022 (x64) Bundled Required by ODBC drivers; installer silently upgrades if needed
.NET Framework 4.7.2+ Pre-installed Present on all Windows Server 2019/2022; may need manual install on Win 10
PowerShell 5.1+ (7.x preferred) Pre-installed Used for host health checks and pre/post migration hooks
AWS CLI 2.x Manual Required only for S3 staging mode on Extra-Large migrations
Azure CLI 2.x Manual Required only for Azure Blob staging mode
ℹ️
The installer places all bundled components under C:\MigrationTool\runtime\ and adds them to the process PATH only for the duration of the migration service. No system-wide PATH changes are made.

🌐 Latency & Bandwidth Requirements

Network performance is typically the primary bottleneck in large database migrations. Endrias Bridge streams data continuously — any packet loss, retransmission, or high-latency hop will compound across billions of rows and dramatically extend migration windows.

Latency Targets

PathIdealAcceptableDegraded (expect slowdown)Unsupported
Source DB → Migration Host < 1 ms < 5 ms 5 – 20 ms > 20 ms
Migration Host → Target DB < 1 ms < 5 ms 5 – 20 ms > 20 ms
Round-trip (full path) < 2 ms < 10 ms 10 – 40 ms > 40 ms

Bandwidth Requirements

TierMinimum BandwidthRecommendedSustained Throughput (expected)
Small100 Mbps1 Gbps10 – 80 MB/s
Medium1 Gbps1 – 10 Gbps80 – 400 MB/s
Large10 Gbps10 Gbps dedicated400 MB/s – 1.2 GB/s
Extra-Large10 Gbps25 Gbps1 – 3 GB/s
⚠️
Bandwidth figures represent sustained transfer of raw row data before compression. Actual NIC utilization will be lower due to protocol overhead, but ensure the physical NIC and switch port are not shared with other high-traffic workloads during the migration window.

🔒 Firewall Port Requirements

Open the following ports on firewalls, security groups, and NSGs along the entire path from the migration host to each endpoint. Endrias Bridge initiates all connections outbound — no inbound connections to the migration host are required.

Database EngineDefault PortDirectionProtocolNotes
SQL Server (on-prem / EC2) 1433 Migration host → Source TCP Use Windows Firewall inbound rule on source; named instances may use dynamic ports
AWS RDS for SQL Server 1433 Migration host → RDS endpoint TCP Add migration host's private IP to RDS security group inbound rule
Azure SQL Database 1433 Migration host → Azure SQL endpoint TCP over TLS 1.2+ Azure SQL enforces TLS; MSODBCSQL18 handles this automatically. Add client IP to Azure SQL firewall.
PostgreSQL (on-prem / EC2) 5432 Migration host → Source/Target TCP Update pg_hba.conf to allow migration host IP; SSL recommended
AWS RDS for PostgreSQL / Aurora 5432 Migration host → RDS endpoint TCP RDS security group: inbound TCP 5432 from migration host subnet CIDR
Azure Database for PostgreSQL 5432 Migration host → Azure PG endpoint TCP over TLS Flexible Server: add VNet integration or public IP firewall rule
MySQL (on-prem / EC2) 3306 Migration host → Source/Target TCP Update bind-address in my.cnf if MySQL is bound to localhost only
AWS RDS for MySQL / Aurora MySQL 3306 Migration host → RDS endpoint TCP RDS security group: inbound TCP 3306 from migration host subnet CIDR
Azure Database for MySQL 3306 Migration host → Azure MySQL endpoint TCP over TLS Flexible Server: VNet integration or firewall rule for migration host IP
AWS S3 (staging mode) 443 Migration host → S3 HTTPS endpoint HTTPS Required only for XL staging mode; use VPC Gateway Endpoint to avoid internet egress
ℹ️
For AWS RDS, the migration host should be an EC2 instance in the same VPC and subnet as the RDS instance. Use a security group reference (not IP CIDR) in the RDS inbound rule for cleaner, rotation-proof access control.

🔗 VPN / Direct Connect / ExpressRoute

For on-premises source databases migrating to AWS or Azure, a private high-throughput connection is strongly recommended for anything above the Small tier. Public internet paths introduce variable latency, packet loss risk, and egress costs.

☁ AWS — Site-to-Site VPN
  • Max throughput: ~1.25 Gbps per tunnel (use ECMP for up to 25 tunnels)
  • Latency adds ~5 – 15 ms over internet path
  • Use BGP routing — avoid static routes for failover reliability
  • Adequate for Medium tier; marginal for Large
  • Cost: ~$0.05/hr per VPN connection
🔗 AWS — Direct Connect
  • Dedicated bandwidth: 1, 10, or 100 Gbps
  • Sub-millisecond jitter; private, not internet-routed
  • Required for Large and Extra-Large tier on-prem sources
  • Use Hosted Connection (partner) for faster provisioning
  • Cost: port + data transfer charges
☁ Azure — ExpressRoute
  • Bandwidth tiers: 50 Mbps – 100 Gbps
  • Private peering to Azure SQL VNet
  • Required for on-prem sources > 100 GB to Azure SQL
  • Use FastPath for ultra-low latency bypass
  • Cost: circuit + gateway + data charges
💡
BGP over static routing: Always configure BGP on site-to-site VPNs. If a tunnel fails, BGP automatically re-advertises routes via the secondary tunnel. Static route failover requires manual intervention or scripted health checks, which introduce unacceptable gaps for multi-day Large-tier migrations.

Topology Recommendation for Large/XL Migrations

ON-PREMISES CLOUD — SAME REGION / AZ SQL Server Core Switch 10 GbE fabric 10 GbE Direct Connect / ExpressRoute Router PRIVATE WAN (Direct Connect / ExpressRoute) Endrias Bridge Migration Host EC2 / Azure VM RDS / Azure SQL private link endpoint private link
Use Direct Connect / ExpressRoute for Large/XL migrations — VPN jitter causes TCP retransmits at scale
Deploy migration host in the cloud (same AZ as target) — not on-premises
Target traffic stays intra-cloud via private link — no public internet hops, sub-ms latency
Never deploy migration host on-prem — source read is slow, target write traverses WAN twice

The migration host should never act as a network bridge between on-premises and cloud. It should be deployed in the cloud (same AZ/region as target) with the source connectivity delivered via Direct Connect or ExpressRoute. This minimizes intra-cloud hops from host to target.

AWS RDS Target Sizing

These recommendations apply to RDS for SQL Server, MySQL, PostgreSQL, and Aurora. Sizing the RDS instance correctly before migration prevents target-side write bottlenecks.

Instance Class Recommendations

DB SizeMinimum Instance ClassRecommended ClassvCPUMemoryNotes
< 10 GB db.t3.medium db.t3.large 2 – 4 4 – 8 GB T-class burstable OK for small databases
10 – 100 GB db.r6i.large db.r6i.xlarge 2 – 4 16 – 32 GB Avoid T-class; use memory-optimized r6i
100 GB – 1 TB db.r6i.xlarge db.r6i.2xlarge 4 – 8 32 – 64 GB Enable Enhanced Monitoring; Multi-AZ after migration
1 TB – 5 TB db.r6i.2xlarge db.r6i.4xlarge 8 – 16 64 – 128 GB Consider Aurora for > 3 TB (auto-scales storage)
5 TB+ db.r6i.4xlarge db.r6i.8xlarge or Aurora 16 – 32 128 – 256 GB Aurora Serverless v2 may be more cost-effective at rest
⚠️
Do not use db.t3/t4 burst instances for Large or Extra-Large migrations. CPU credit exhaustion mid-migration causes sudden throughput collapse. Use db.r6i or db.m6i families for sustained high-write workloads during migration load.

Storage Configuration

DB SizeStorage TypeProvisioned IOPSAuto-scalingNotes
< 10 GB gp3 3,000 (baseline) Yes gp3 default is sufficient
10 – 100 GB gp3 6,000 – 12,000 Yes Manually provision gp3 IOPS above baseline to avoid throttling
100 GB – 1 TB io2 16,000 – 64,000 Yes io2 Block Express for highest durability and consistent low latency
1 TB+ io2 Block Express 64,000 – 256,000 Yes Block Express supports up to 64 TB; plan for 20 – 30% headroom above initial size

Azure SQL Target Sizing

Azure SQL Database is available in DTU-based (Standard/Premium) and vCore-based (General Purpose, Business Critical, Hyperscale) purchasing models. For migration workloads, vCore Business Critical or Hyperscale is recommended for Large and XL tiers due to in-memory throughput and local SSD storage.

DTU / Premium Tier (Legacy Sizing)

DB SizeMinimum TierRecommended TierMax DTUsNotes
< 10 GBS3 (100 DTU)P1 (125 DTU)125S3 is acceptable; P1 gives consistent IOPS
10 – 100 GBP1 (125 DTU)P2 (250 DTU)250P2 provides 2,000 MB/s log write throughput
100 GB – 1 TBP2 (250 DTU)P4 (500 DTU)500Must be Premium tier for > 500 GB max storage
1 TB+P6 (1,000 DTU)P11 (1,750 DTU)1,750Consider Hyperscale for > 4 TB

vCore Model (Recommended)

DB SizeService TierMin vCoresRecommendedNotes
< 10 GBGeneral PurposeGP_Gen5_2GP_Gen5_4Remote SSD; adequate for small workloads
10 – 100 GBGeneral PurposeGP_Gen5_4GP_Gen5_8Remote premium SSD; scale vCores for write parallelism
100 GB – 1 TBBusiness CriticalBC_Gen5_4BC_Gen5_8Local NVMe SSDs; 3 replicas; built-in HA — ideal for migration landing zone
1 TB+Hyperscale or BCHS_Gen5_8HS_Gen5_16Hyperscale: auto-scale storage to 100 TB; fast page servers reduce IOPS bottleneck
💡
Post-migration right-sizing: Provision the target 1 – 2 tiers above your steady-state requirement during migration to absorb the write burst. Once migration is complete and validated, scale down to the production service tier. Azure SQL vCore scaling is online with minimal disruption.

💾 Storage Configuration Best Practices

SettingAWS RDSAzure SQLRationale
Auto-scaling Enable storage autoscaling with 20% headroom Automatic in vCore model Prevents storage-full abort mid-migration
Storage type for Large io2 Block Express Business Critical (local NVMe) Consistent low-latency writes under sustained load
Pre-allocate target size Set initial allocation = source size × 1.3 Configure max size in portal Avoids mid-migration storage growth events that pause writes
Multi-AZ / Zone-redundant Enable after migration is validated Enable Zone Redundancy after validation Replica sync during migration adds write latency
Backup during migration Disable automated backups (set retention to 0) during load, re-enable after Backup is continuous; cannot disable — accept PITR overhead Reduces I/O contention on target during high-write migration

⚙️ Parameter Group Tuning

Apply these parameter changes to the target database before migration begins. Endrias Bridge can automate most of these via the Pre-Migration Optimizer, but manual review is recommended for Large and XL tiers.

MySQL (RDS / Aurora MySQL)

ParameterMigration ValueDefaultReason
innodb_buffer_pool_size75% of instance RAM128 MBCache insert buffer; reduces disk I/O on target
innodb_log_file_size2 GB (or 4 GB for XL)48 MBLarger redo log avoids frequent checkpoint stalls
innodb_flush_log_at_trx_commit2 (during migration)1Reduces fsync calls per committed batch; restore to 1 post-migration
max_allowed_packet256 MB4 MBSupports large BLOB / TEXT rows in batches
max_connections2 × parallel_workers + 20151Each worker holds a persistent connection pool
bulk_insert_buffer_size256 MB8 MBSpeeds up bulk INSERT operations
sync_binlog0 (during migration)1Disables binary log sync for write speed; restore to 1 after
🚫
Setting innodb_flush_log_at_trx_commit=2 and sync_binlog=0 reduces crash durability. These are acceptable during a controlled migration window but must be restored to production values before enabling application traffic.

PostgreSQL (RDS / Aurora / Azure PG)

ParameterMigration ValueDefaultReason
work_mem64 MB – 256 MB4 MBSpeeds sort/hash operations for large row sets
maintenance_work_mem1 GB – 2 GB64 MBFaster index rebuilds post-migration
max_connections2 × parallel_workers + 20100Avoid connection exhaustion with parallel workers
checkpoint_completion_target0.90.5Spreads checkpoint I/O over longer period
wal_buffers64 MB-1 (auto)Larger WAL buffer reduces WAL write stalls
synchronous_commitoff (during migration)onAsync commit; increases throughput; restore after migration
max_wal_size4 GB – 16 GB1 GBAvoids frequent forced checkpoints during bulk load
autovacuumoff (during migration)onPrevents autovacuum contention during bulk insert; run VACUUM ANALYZE after

SQL Server Target (RDS for SQL Server / Azure SQL)

SettingMigration ValueNotes
Recovery ModelBULK_LOGGED or SIMPLEMinimizes log growth during bulk insert; switch to FULL after migration
Max Degree of Parallelism (MAXDOP)1Prevents parallel insert plans that conflict with Endrias Bridge worker parallelism
Auto-ShrinkOFFAuto-shrink causes severe I/O contention; must be off
Auto-CloseOFFPrevents connection teardown between batches
Fill Factor (indexes)80%Applied when Endrias Bridge rebuilds indexes post-migration
Delayed DurabilityFORCED (during migration)Reduces log flush latency; restore to DISABLED after migration

🔄 Batch Size Tuning Guide

Endrias Bridge reads data from the source in discrete batches and commits them to the target. Batch size is the single most impactful configuration parameter for large migration performance. Too small wastes round-trip overhead; too large risks OOM errors and unrecoverable partial-batch failures.

Table ProfileRow CountRecommended Batch SizeStrategy
Default / Unknown Any 10,000 rows Safe default; no PK-range chunking needed
Large table > 1 M rows 50,000 – 100,000 rows Tune up from default once row width is known; monitor target write latency
Very large table > 10 M rows 100,000 – 250,000 rows Enable PK-range chunking; use --pk-chunk-size flag
Massive table > 100 M rows 250,000 rows PK-range chunking mandatory; consider parallel sub-range workers
Wide-row table Any, avg row > 10 KB 1,000 – 5,000 rows Reduce batch size to stay within memory formula; LOB columns require special handling
ℹ️
PK-range chunking splits a single large table across multiple independent sub-ranges based on the primary key. Each sub-range is processed by a separate worker and is independently resumable on failure. Requires a numeric or IDENTITY primary key. Use --enable-pk-chunk in the migration config.

🧮 Memory Formula

Use this formula to validate that your chosen batch size and worker count will fit within available RAM on the migration host. Exceeding available RAM forces Windows to page, which severely degrades throughput on Large-tier migrations.

required_RAM_bytes = batch_size × avg_row_width_bytes × overhead_factor × num_workers
-- overhead_factor = 3 (source buffer + target buffer + transform overhead)
-- avg_row_width_bytes: use MigrationBridge DB Sizing Scan output

-- Example: 100,000 rows × 500 bytes × 3 overhead × 8 workers
required_RAM = 100,000 × 500 × 3 × 8 = 1,200,000,000 bytes ≈ 1.2 GB

-- Add 4 GB for OS + MigrationBridge overhead → total host RAM needed: ~5.5 GB in this example
-- For safety: target_RAM >= required_RAM × 1.5

Quick Reference: Batch Size vs. Host RAM

Batch SizeAvg Row WidthWorkersRequired RAMSuggested Host RAM
10,000500 B4~60 MB8 GB
50,000500 B4~300 MB8 GB
100,000500 B8~1.2 GB16 GB
100,0002,000 B8~4.8 GB16 GB
250,000500 B16~6 GB32 GB
250,0002,000 B16~24 GB64 GB
250,00010,000 B (10 KB)8~60 GB128 GB

Parallel Table Workers

Endrias Bridge migrates multiple tables simultaneously using a configurable worker pool. The optimal number of parallel workers balances CPU utilization on the migration host against connection limits on both source and target databases.

Host CPU CoresFormulaRecommended WorkersConnection Count
4 cores4 / 2 = 224 – 6 total connections
8 cores8 / 2 = 448 – 12 total connections
16 cores16 / 2 = 8816 – 24 total connections
32 cores32 / 2 = 161632 – 48 total connections
# migration_config.json — parallel worker configuration
{
  "migration": {
    "parallel_table_workers": 8,          // CPU_cores / 2
    "batch_size": 100000,               // rows per batch
    "enable_pk_chunk": true,             // for tables > 100M rows
    "pk_chunk_size": 5000000,           // rows per PK sub-range
    "connection_pool_size": 3,           // connections per worker
    "commit_interval": 1                // commit every N batches
  }
}
💡
For heterogeneous table sizes (many small tables + a few giant tables), configure parallel_table_workers based on the small-table majority. Large tables are automatically throttled via PK-range chunking to prevent one table from monopolizing all workers.

Pre-Migration Checklist (Large Databases)

Complete every item in this checklist before initiating a Large or Extra-Large migration. Items marked with a warning badge have caused production migration failures when skipped.

📄 SQL Server Source Preparation

Run these T-SQL commands on the SQL Server source database before starting a Large or XL migration. Reverse all changes after migration is validated.

-- ─────────────────────────────────────────────────────────────────────────
-- SQL Server Pre-Migration Configuration
-- Run on SOURCE database before starting Endrias Bridge migration
-- ─────────────────────────────────────────────────────────────────────────

-- 1. Limit parallelism on source to prevent competing parallel scans
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;

-- 2. Switch source to Bulk-Logged to reduce log file growth
ALTER DATABASE [YourSourceDB] SET RECOVERY BULK_LOGGED;

-- 3. Reduce lock escalation threshold to protect source OLTP traffic
ALTER DATABASE [YourSourceDB] SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE [YourSourceDB] SET READ_COMMITTED_SNAPSHOT ON;

-- 4. Verify source configuration
SELECT name, recovery_model_desc, snapshot_isolation_state_desc,
       is_read_committed_snapshot_on
FROM sys.databases
WHERE name = 'YourSourceDB';

-- ─────────────────────────────────────────────────────────────────────────
-- POST-MIGRATION: Restore original settings
-- ─────────────────────────────────────────────────────────────────────────

-- Restore MAXDOP to original value (check your baseline before migration)
EXEC sp_configure 'max degree of parallelism', 0; -- 0 = SQL Server default (auto)
RECONFIGURE;

-- Restore full recovery model (important for DR / backup compliance)
ALTER DATABASE [YourSourceDB] SET RECOVERY FULL;

-- Take a log backup immediately after switching back to FULL
BACKUP LOG [YourSourceDB]
    TO DISK = N'NUL';  -- Replace with actual backup path in production

AWS-Specific Guidance

EC2 Migration Host in Same AZ as RDS Target

Deploy the EC2 migration host in the same Availability Zone as the RDS target instance. Cross-AZ traffic incurs additional latency (typically 1 – 3 ms) and data transfer costs ($0.01/GB). For a 1 TB migration, same-AZ saves ~$10 in transfer costs and meaningfully reduces migration time.

Recommended EC2 Instance Types for Migration Host

TierInstance TypevCPURAMNetworkNotes
Smallc6i.xlarge48 GBUp to 12.5 GbpsCost-efficient; compute-optimized
Mediumr6i.xlarge432 GBUp to 12.5 GbpsMemory-optimized for larger batches
Larger6i.2xlarge864 GBUp to 12.5 GbpsMatches db.r6i.2xlarge target sizing
Extra-Larger6i.4xlarge16128 GBUp to 25 GbpsUse with cluster placement group for max throughput

Azure-Specific Guidance

Migration Host in Same Region as Azure SQL

Deploy the Azure VM migration host in the same Azure region as the target Azure SQL Database or Managed Instance. Unlike AWS (AZ-level), Azure SQL zone redundancy operates within a region — intra-region latency to Azure SQL from a VM in the same region is typically < 1 ms.

Recommended Azure VM SKUs for Migration Host

TierVM SKUvCPURAMNetworkNotes
SmallD4s_v5416 GB12.5 GbpsGeneral purpose; good price/performance
MediumE8s_v5864 GB12.5 GbpsMemory-optimized; matches Azure SQL GP targets
LargeE16s_v516128 GB12.5 GbpsMatches BC_Gen5_8 target sizing
Extra-LargeE32s_v5 or M32ms32256 GB16 GbpsM-series for memory-bound XL migrations with wide rows

🏠 Hybrid & On-Premises Guidance

VPN Configuration

When using a site-to-site VPN between on-premises and cloud, follow these requirements to maintain throughput during multi-day Large-tier migrations.

RequirementSpecificationWhy It Matters
Routing Protocol BGP (not static routes) Automatic failover to secondary tunnel; static routes require manual intervention during tunnel failure
Tunnel Mode Active-Active (dual tunnels) Doubles available bandwidth; provides failover without migration restart
IKE Version IKEv2 Faster re-keying; better handling of long-lived connections required for multi-day migrations
MTU 1,400 bytes (or match IPsec overhead) Prevents fragmentation of large batch packets; fragmentation causes retransmits and 30 – 50% throughput loss
DPD (Dead Peer Detection) Enabled, 30-second interval Ensures tunnel is restarted quickly after network interruption; avoids silent tunnel failures mid-migration
ECMP (Equal-Cost Multi-Path) Enabled on VPN gateway (AWS: Transit Gateway ECMP) Load-balances across both active tunnels for up to 2× throughput
🚫
Do not start a Large-tier migration over a VPN-only path without validating sustained throughput. Run iperf3 for 30 minutes at migration batch concurrency levels before committing to the migration window. A VPN that sustains 200 Mbps for 5 minutes may degrade to 50 Mbps over a 30-hour migration due to IKE re-key overhead or ISP shaping.

On-Premises Migration Host

If the migration host must reside on-premises (rather than cloud-side), ensure it has direct high-speed LAN access to the source database and dedicated WAN connectivity to the cloud target.