Migrating the Jira Database Platform to AWS Aurora

This post details the migration of Jira's PostgreSQL database fleet to AWS Aurora. The migration strategy involved converting RDS instances to Aurora read replicas and then promoting them, with a critical challenge arising from excessive file counts on source instances that caused startup timeouts on new Aurora clusters. To overcome this, a 'draining' process was implemented to reduce file counts by migrating tenants to other instances before conversion, followed by a 'refill' process where converted Aurora clusters became targets for new migrations, creating a daisy-chain loop. This approach minimized migration-related infrastructure and maintained high throughput, averaging 38,000 daily migrations at peak. The process also involved careful management of source and destination concurrency to avoid impacting normal operations.