RDS Instance Cost Advisor · guide

RDS instance cost: Multi-AZ, io1 IOPS, Graviton and idle instances

Short answer: an RDS instance bills for every hour it exists, doubled if it is Multi-AZ, plus storage and any provisioned IOPS. Most avoidable spend is a standby nobody needs, per-IOPS charges a cheaper volume type includes, an older instance family, and databases that serve nobody.

What it costs (illustrative)

Where the money is

Measure and fix

  1. Instances: aws rds describe-db-instances --query 'DBInstances[].[DBInstanceIdentifier,DBInstanceClass,Engine,MultiAZ,StorageType,AllocatedStorage,Iops]' --output text
  2. CPU: CloudWatch CPUUtilization averaged over 30 days per instance; peak ReadIOPS + WriteIOPS before touching io1.
  3. Paste rows into the advisor or run node cli.mjs analyze instances.csv. It prints an aws rds modify-db-instance command per fix.
  4. Change one instance at a time on a copy or in a maintenance window; class and storage changes restart or reconfigure a live database.

Questions

Should dev and staging RDS databases be Multi-AZ?

Usually not. Multi-AZ bills the instance and its storage twice for a synchronous standby that only matters if production traffic must survive a zone failure. A dev or staging database can be single-AZ and restored from a snapshot if the zone fails.

Can gp3 replace io1 on RDS?

Often, yes. gp3 includes a baseline of 3,000 IOPS below 400 GB and 12,000 at 400 GB and above with no per-IOPS charge, while io1 bills every provisioned IOPS every month. If your provisioned IOPS is inside that baseline and CloudWatch shows peaks under it, the per-IOPS charge is avoidable. Verify latency after the change.

Is a Graviton RDS instance really cheaper?

For the same size, the Graviton families (t4g, m6g, r6g) list below their x86 twins (t3, m5, r5) for MySQL, MariaDB and PostgreSQL. Changing the class restarts the instance and needs an engine version that supports it, so test on a restored copy first.