Amazon RDS for PostgreSQL is a managed service for PostgreSQL available as part of Amazon Web Services. It comes with a handful of management functions that are intended to reduce the workload of managing the databases. Let’s take a look at this functionality and see how it compares with options available in ClusterControl.
For Aurora it is 9.6.8 to 11.6:
You can pick if the cluster should be highly available or not at the deployment time.
You can deploy a master and multiple slaves using streaming replication.
ClusterControl supports asynchronous and semi-synchronous replication. You can deploy the rest of the high availability stack (i.e. load balancers) at any point in time.
PostgreSQL Backup Management
Amazon RDS supports snapshots as the way of taking backups. You can rely on the automated backups or take backups manually at any time.
Restoration is done as a separate cluster. Point-in-time recovery is possible with up to one second granularity. Backups can also be encrypted.
It is possible to store the backup locally or upload it to the cloud. Point-in-time recovery is supported for most of the backup methods.
When restoring, it is possible to do it on an existing cluster, create a new cluster or restore it on a standalone host. It is possible to schedule a backup verification job. Backups can be encrypted.
PostgreSQL Database Monitoring
RDS comes with features that provide visibility into your database operations.
Using Performance Insights, you can check the state of the nodes in CloudWatch:
ClusterControl provides insight into the database operations using the Overview section:
It is also possible to enable agent-based monitoring for more detailed dashboards:
In couple of clicks you can scale your RDS cluster by adding replicas to RDS or readers to Aurora:
PostgreSQL High Availability (HA)
Aurora clusters can benefit from a load balancer deployed in front of them. Regular RDS clusters do not have this feature available.
In the Aurora cluster it is possible to promote readers to become master. For RDS clusters you can failover to a read replica but then the replica will become a new node, without any other replicas. You would have to deploy new replicas after the failover completes.
It is possible to deploy highly available clusters for both RDS and Aurora. Failed master nodes are handled automatically, by promotion of one of the available replicas.
ClusterControl can be used to deploy a full high availability stack that consists of master – slave database cluster, load balancers (HAProxy) and keepalived to provide VIP across load balancers.
It is possible to promote a slave. If the master is unavailable, one of the slaves will be promoted as a new master and remaining slaves will be slaved off the new master.
PostgreSQL Configuration Management
In PostgreSQL RDS configuration management can be performed using parameter groups. You can create custom groups with your custom configuration and then assign them to new or existing instances.
This lets you share the same configuration across multiple instances or across whole clusters. There is a separate parameter group for Aurora and RDS. Some of the configuration settings cannot be configured, especially the ones related to backups and replication.
It is also possible to make the configuration change by directly modifying the configuration files:
In ClusterControl you have full control over the configuration.
There are also other features that ClusterControl provides that are not available in RDS: Query Monitoring, User Management, & Operational Reports to name a few.