Postgresql – Moving a PostgreSQL database to a different AWS RDS instance

amazon-rdsmigrationpostgresql

I have an AWS RDS instance with multiple PostgreSQL databases in there including an application database and a monitoring database. The problem is that the monitoring database is consuming lots of resources and causes performance problems in the whole instance, so I'd like to have the application database and the monitoring database in different AWS RDS instances.

I have been investigating the issue and I've found that people are interested in having all their databases running on the same instance, while what I'm looking for is the other way around, so I'm wondering if I'm missing something.

The solutions that I've found are basically as follows:

  • Use an AWS RDS snapshot

    This should be easy to do, but snapshots are at the instance level and I don't want to copy all databases, but just a single one.

  • Use the AWS Database Migration Service

    The database migration service looks like a good approach because it uses a replication instance to make sure that all data written to the database while the migration task is running is captured. Unfortunately, I don't see how to use it for a single database.

  • Create a new instances and use pg_dump/pg_restore manually.

    This approach seems the easiest one, but I'd need to make sure that either the application or the monitoring service are stopped while this is running.

So far, it seems to me that the right solution is the third one for its simplicity. Do you see any advantage/disadvantage that I might have overlooked?

Best Answer

You can safely replicate the whole instance using DMS, then remove the unnecessary DBs on both resulting clusters. After this, you will most possibly have excessive storage on the new instance - I think (but never tried) you can just do another such migration to a fitting (smaller) instance type.