Best Practices
Here you will find our technical and procedural recommendations for a successful migration, based on our collective experiences.
General
Over-provision the destination for the duration of the migration process
Build indexes later in the CDC phase
Use UAT and DEV post-migration average object size to get accurate estimates for PROD data size and disk sizes
Monitor the process
CPU, Memory, Disk IO on the source and destination
CPU and Memory for Dsync process
Dsync throughput and replication lag
Check all the components before the cutover time, especially when the source and the destination been in the CDC mode for a prolonged period of time
Source database and services health
Destination database and services health
Dsync process(es) health and replication lag
When running Dsync in a single-binary mode, any errors and replication lag are reflected in the CLI progress view and the dsync log file
When running the Enterprise version, in addition to the web progress dashboard, it's a good idea to check the status of workflows and tasks in Temporal, as well as check for any reported errors in SigNoz log collector
Database-specific recommendations
Cosmos DB RU destinations
Enable server-side retries in Cosmos DB configuration
Cosmos DB RU consumes a lot of resources for batch writes (~3-5 RU per write). When using as a destination for a large migration, make sure to provision at least 8K RUs for default settings
MongoDB destinations:
For large (multi-TB) migrations use
w:majoritywrite concern (default on Atlas) and increasereplWriterThreadCountif there's CPU and disk headroom (e.g. try 64 for M200)Disable backups
Set oplog to a fixed size in Atlas
Use network compression in the connection string when Atlas is in a different region or availability zone - this will help save network costs
Dsynct Enterprise:
Use a dedicated disk for Temporal database (recommended 3000 IOPS, 125 MBps)
Last updated