Any way to run AWS Aurora locally?
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.
AWS Aurora is a high-performance relational database service offered by Amazon within its AWS cloud platform. It enhances the capabilities found in typical database services by providing improved speed, reliability, and scalability. While many enterprises leverage AWS Aurora for its robustness and features, they often seek a way to run Aurora or simulate its environment locally for development, testing, or cost-saving purposes. In this article, we'll explore how you can run an Aurora-like setup locally and discuss technical aspects and limitations you should consider.
Understanding AWS Aurora
Before we delve into running AWS Aurora locally, let's briefly understand its unique features:
- Compatibility: Aurora is compatible with both MySQL and PostgreSQL, which makes it flexible for various applications.
- Performance and Scalability: Aurora promises five times the throughput of standard MySQL and three times that of PostgreSQL, with seamless scaling up to 15 read replicas.
- Fault Tolerance: It uses a distributed, fault-tolerant, self-healing storage system that automatically replicates data across multiple Availability Zones (AZs).
These features, however, make it challenging to replicate Aurora's capabilities locally. Instead, we can attempt to simulate its environment using other methods.
Simulating AWS Aurora Locally
There isn't an official AWS Aurora emulator for local environments due to its distributed nature and integration with AWS services. However, developers often use alternative approaches to mimic its environment for development and testing purposes.
- Utilizing AWS RDS MySQL/PostgreSQL: The easiest way to simulate Aurora is by running the open-source versions (MySQL or PostgreSQL) found on RDS locally. While this won't offer Aurora's performance improvements, it provides a compatible environment for testing. Install MySQL or PostgreSQL using Docker for consistency:
- Configure the Aurora Serverless database with minimal capacity.
- Ensure your applications can automatically pause and resume database connections, mimicking a "serverless" local test.
- Performance Differences: Aurora's distributed nature means local setups can't match its performance improvements or replication abilities.
- Cost: Serverless and AWS simulation still incur costs and may not reflect true local environments.
- Maintaining Consistency: Ensure schema and version compatibility when using MySQL/PostgreSQL locally to avoid discrepancies during deployment.
Related reading
- Any way to search across all log streams in a cloud watch log group?
- Api gateway get output results from step function?
- Append a new object to a JSON Array in DynamoDB using NodeJS
- Append data to an S3 object
- Any way to select without causing locking in MySQL?
- Anyone know anything about OLAP Internals?
- Application Load Balancer ELBv2 SSL pass through
- Application Load Balancer with ECS Fargate

System Design Fundamentals
Build a strong foundation in designing scalable, reliable distributed systems.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
System Design practice on Codemia
Work through 120+ system design problems with detailed solutions, from rate limiters to multi-region storage.