MinervaDB · Amazon RDS Support · 24×7 remote DBA and consulting for RDS for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, Db2, Aurora PostgreSQL and Aurora MySQL
Amazon RDS Support for the Database Work AWS Does Not Do: Tuning, Upgrades, Recovery and 24×7 Response
Amazon RDS runs the servers, the storage and the failover mechanics. It does not read your query plans, set your recovery objectives, plan your way off Extended Support or answer the page when a replica falls six hours behind. MinervaDB Amazon RDS Support is that missing layer: principal-level engineers from the engines themselves, working inside your AWS account through a least-privilege role, with a 15-minute Severity-1 response around the clock.
The responsibility line
What AWS operates, and what Amazon RDS Support has to cover
The shared-responsibility model is usually drawn for security. For databases it matters more for operations, because the boundary sits in the middle of the engine rather than at its edge. AWS owns everything below the database process; you own everything the database does with it. Parameter groups, the version calendar and recovery are shared, and shared is where incidents come from, which is exactly where Amazon RDS Support starts.
Figure 1. The RDS responsibility line, layer by layer. Amazon RDS Support from MinervaDB takes on the five layers above the AWS-operated platform, alongside your team.
The practical consequence is that AWS Support and Amazon RDS Support answer different questions. AWS Support confirms that the instance, the storage volume and the Multi-AZ pair are healthy. It does not explain why a checkout query that took 40 milliseconds last month now takes four seconds, why autovacuum cannot keep up with one table, or why the replica you promote during a failover is missing the last few minutes of binlog. Most of our clients hold both AWS Support and Amazon RDS Support, and the escalation path between them is written into the runbook.
Everything Amazon RDS Support recommends is anchored in a named measurement: a Database Insights wait-event profile, a pg_stat_statements or performance_schema ranking, a CloudWatch metric, or a timed drill. Engine and feature coverage follows the Amazon RDS User Guide, and the deprecation calendar for every engine is re-verified at the start of each Amazon RDS Support engagement rather than recalled.
Version lifecycle
Extended Support: the RDS bill that grows with every quarter you wait
Once an RDS for PostgreSQL or RDS for MySQL major version passes its end of standard support, AWS enrols it in RDS Extended Support and bills a per-vCPU-hour surcharge from the following day, including the standby in a Multi-AZ deployment. MariaDB has no Extended Support at all; its end of support is a forced upgrade. The calendar below is the one Amazon RDS Support plans against for the next three years.
Figure 2. RDS end-of-support dates from the AWS release calendars as of 2026-09-30, and the formula behind the Extended Support line on your bill.
The Extended Support arithmetic is simple and still surprises people in every Amazon RDS Support assessment we run. On the published RDS for PostgreSQL rate for US East (Ohio), a Multi-AZ DB instance with 8 vCPUs carries 16 billable vCPUs, so Extended Support adds 16 × 730 × $0.100, about $1,168 a month in years one and two and double that from year three. That is an illustrative calculation on AWS's published rate, not a quote; your Region, engine and instance mix set the real number.
Three dates matter most right now. RDS for MySQL 8.0 left standard support on 2026-07-31 and bills Extended Support until 2029-07-31, per the RDS for MySQL version calendar. RDS for MariaDB 10.6 reaches end of support on 2026-12-31 with no paid runway, as the RDS for MariaDB version page shows. RDS for PostgreSQL 14 leaves standard support on 2027-02-28, according to the RDS for PostgreSQL release calendar.
The script below is the first thing Amazon RDS Support runs in a new account. It lists every instance in a Region with its engine version, vCPU count, billed copies, end-of-standard-support date and an estimate of the current monthly Extended Support charge. It is read-only and takes the rate as an input, because rates differ by Region and year.
#!/usr/bin/env python3
# rds_es_exposure.py — read-only: estimates Extended Support exposure for every RDS/Aurora instance in a Region.
# Needs rds:DescribeDBInstances and ec2:DescribeInstanceTypes. Rates and dates are inputs, not facts baked in:
# re-check both against the AWS release calendars and the pricing page for your Region before quoting a number.
import sys, datetime, boto3
REGION = sys.argv[1] if len(sys.argv) > 1 else "us-east-2"
RATE = float(sys.argv[2]) if len(sys.argv) > 2 else 0.100 # USD per vCPU-hour, years 1-2 (published, US East Ohio, RDS PostgreSQL)
EOSS = { # end of standard support, from the AWS calendars (2026-09-30)
("postgres", "11"): "2024-02-29", ("postgres", "12"): "2025-02-28", ("postgres", "13"): "2026-02-28",
("postgres", "14"): "2027-02-28", ("postgres", "15"): "2028-02-29", ("postgres", "16"): "2029-02-28",
("mysql", "5.7"): "2024-02-29", ("mysql", "8.0"): "2026-07-31", ("mysql", "8.4"): "2029-07-31",
}
rds, ec2 = boto3.client("rds", region_name=REGION), boto3.client("ec2", region_name=REGION)
vcpu_cache = {}
def vcpus(db_class):
ec2_type = db_class.removeprefix("db.")
if ec2_type not in vcpu_cache:
try:
info = ec2.describe_instance_types(InstanceTypes=[ec2_type])["InstanceTypes"][0]
vcpu_cache[ec2_type] = info["VCpuInfo"]["DefaultVCpus"]
except Exception:
vcpu_cache[ec2_type] = None # serverless or classes without an EC2 twin: report, do not guess
return vcpu_cache[ec2_type]
today = datetime.date.today().isoformat()
print(f"{'instance':32} {'engine':18} {'version':10} {'vCPU':>4} {'copies':>6} {'EOSS':10} {'USD/month':>10}")
for page in rds.get_paginator("describe_db_instances").paginate():
for db in page["DBInstances"]:
engine = db["Engine"].replace("aurora-postgresql", "postgres").replace("aurora-mysql", "mysql")
major = db["EngineVersion"].split(".")[0] if engine == "postgres" else ".".join(db["EngineVersion"].split(".")[:2])
eoss = EOSS.get((engine, major), "-")
cpu = vcpus(db["DBInstanceClass"])
copies = 2 if db.get("MultiAZ") else 1 # Multi-AZ DB instance bills the standby; cluster members are listed individually
cost = cpu * copies * 730 * RATE if (cpu and eoss != "-" and eoss < today) else 0.0
print(f"{db['DBInstanceIdentifier'][:32]:32} {db['Engine'][:18]:18} {db['EngineVersion'][:10]:10} "
f"{cpu or 0:>4} {copies:>6} {eoss:10} {cost:>10,.0f}")High availability
Four RDS availability topologies, and the failover time users actually see
RDS offers four distinct availability designs, and they fail over differently. Choosing between them is an engineering decision about read scaling, replication mode and blast radius, not a checkbox. Amazon RDS Support designs the topology, then proves it: every client gets scheduled failover drills measured from the first application error to the first successful transaction.
Figure 3. Multi-AZ DB instance, Multi-AZ DB cluster, Aurora cluster and Aurora Global Database, with the application-side controls that decide how long users notice a failover.
For Amazon RDS Support purposes the four designs differ in one question each. A Multi-AZ DB instance keeps a synchronous standby that nobody can read. A Multi-AZ DB cluster gives a writer and two readable standbys across three Availability Zones with semisynchronous replication. Aurora separates compute from a distributed volume that keeps six copies across three zones, so replicas share storage rather than replaying it. Aurora Global Database adds read-only secondary Regions, and AWS reports cross-Region switchover typically under 30 seconds since 2025.
The part AWS cannot do for you is on the client side. Connection pools that do not detect a dead socket, drivers that retry without a total timeout, and JVMs that cache DNS longer than the record's TTL all stretch a clean 20-second failover into minutes of errors. RDS Proxy helps when its pinning rules allow multiplexing and hurts when they do not. Our Amazon RDS Support runbooks record the measured number for each application, not the number in the brochure.
Performance engineering
Performance on RDS: from Database Insights to the query plan
On RDS the starting point is CloudWatch Database Insights, which now carries the database-load and per-query data that Performance Insights introduced; in Advanced mode it adds lock diagnostics and execution-plan capture. Amazon RDS Support treats it as the map, then goes into the engine for the evidence: the statement ranking, the plan and the wait profile behind every recommendation.
On PostgreSQL engines Amazon RDS Support ranks statements by total time rather than by mean, because the query that runs forty thousand times at 30 milliseconds usually matters more than the report that runs once at four seconds. The same session checks transaction-ID age per database, which is the one PostgreSQL failure that RDS will not rescue you from.
-- RDS for PostgreSQL / Aurora PostgreSQL: where the time goes, and how close each database is to wraparound
SELECT
queryid,
calls,
ROUND(total_exec_time::NUMERIC / 1000, 1) AS total_s,
ROUND(mean_exec_time::NUMERIC, 2) AS mean_ms,
shared_blks_read,
LEFT(query, 80) AS query_head
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 15;
SELECT
datname,
AGE(datfrozenxid) AS xid_age,
ROUND(100.0 * AGE(datfrozenxid) / 2147483648, 1) AS pct_of_wraparound_limit
FROM pg_database
ORDER BY xid_age DESC;On MySQL-family engines the Amazon RDS Support equivalent is the statement digest table in performance_schema, ranked the same way. Rows examined against rows sent is the fastest index-health signal we know on InnoDB, and it is the column we sort by second.
-- RDS for MySQL / MariaDB / Aurora MySQL: statement digests ranked by total time (timers are in picoseconds)
SELECT
schema_name,
LEFT(digest_text, 80) AS digest_head,
count_star AS execs,
ROUND(sum_timer_wait / 1e12, 1) AS total_s,
ROUND(avg_timer_wait / 1e9, 2) AS avg_ms,
sum_rows_examined,
sum_rows_sent
FROM performance_schema.events_statements_summary_by_digest
ORDER BY sum_timer_wait DESC
LIMIT 15;Under Amazon RDS Support, changes reach production as parameter-group edits with the current value, proposed value, unit and apply type stated before anything runs. Dynamic parameters apply immediately; static ones wait for a reboot and are scheduled into a maintenance window with a manual snapshot taken first.
| Parameter (RDS for PostgreSQL) | Engine default | Proposed | Unit | Apply type | Why |
|---|---|---|---|---|---|
log_min_duration_statement | -1 (off) | 1000 | ms | Dynamic, immediate | Statements slower than one second are logged with their duration, and reach CloudWatch Logs when log export is enabled |
log_lock_waits | 0 (off) | 1 | boolean | Dynamic, immediate | Lock waits longer than deadlock_timeout become visible evidence |
# Parameter-group change with verification and rollback. Both parameters are dynamic (ApplyMethod=immediate). # Test on a restored snapshot or a Blue/Green green first; take a manual snapshot before any static change. PG=pg16-orders-prod # 1. Verify current values before touching anything aws rds describe-db-parameters --db-parameter-group-name "$PG" \ --query "Parameters[?ParameterName=='log_min_duration_statement' || ParameterName=='log_lock_waits'].[ParameterName,ParameterValue,ApplyType]" \ --output table # 2. Apply aws rds modify-db-parameter-group --db-parameter-group-name "$PG" --parameters \ "ParameterName=log_min_duration_statement,ParameterValue=1000,ApplyMethod=immediate" \ "ParameterName=log_lock_waits,ParameterValue=1,ApplyMethod=immediate" # 3. Validate: the instance must report in-sync, not pending-reboot aws rds describe-db-instances --db-instance-identifier orders-prod \ --query "DBInstances[0].DBParameterGroups[0].ParameterApplyStatus" # Rollback: return both parameters to the engine default aws rds reset-db-parameter-group --db-parameter-group-name "$PG" --parameters \ "ParameterName=log_min_duration_statement,ApplyMethod=immediate" \ "ParameterName=log_lock_waits,ApplyMethod=immediate"
Major upgrades
Major version upgrades with Blue/Green Deployments
Most RDS major upgrades we run use RDS Blue/Green Deployments: a replicated green copy is upgraded and tested while blue carries production, and switchover renames the endpoints under guardrails. It is the safest tool AWS provides for the job, and it has sharp edges that Amazon RDS Support checks for before the first command runs.
Figure 4. The Blue/Green upgrade flow, the constraints that stop or break a switchover, and the evidence we capture on both sides.
Two constraints catch teams most often, and Amazon RDS Support checks both first. An active zero-ETL integration to Redshift must be deleted before switchover, and PostgreSQL sequences are not replicated, so RDS advances every sequence on green at switchover; with very large sequence counts that step can hit the switchover timeout. We count sequences and list integrations on day one of the plan, not on the night.
In an Amazon RDS Support upgrade, validation happens on green before any traffic moves: the top statements are replayed or observed, plans are compared across versions, and the rollback path is written into the change ticket. The old blue instance is kept after switchover until the application owners sign off, then deleted.
# Major version upgrade through RDS Blue/Green Deployments (RDS for PostgreSQL shown).
# Pre-checks on blue: sequence count (switchover advances every sequence) and zero-ETL integrations (must be removed).
psql "host=orders-prod.${RDS_ENDPOINT_SUFFIX} dbname=orders user=${RDS_ADMIN_USER} sslmode=verify-full" \
-c "SELECT COUNT(*) AS sequences FROM pg_sequences;"
aws rds describe-integrations --query "Integrations[].[IntegrationName,SourceArn,Status]" --output table
# Create green on the target major version with its own parameter group
aws rds create-blue-green-deployment \
--blue-green-deployment-name orders-pg16-to-pg17 \
--source "arn:aws:rds:us-east-2:${AWS_ACCOUNT_ID}:db:orders-prod" \
--target-engine-version "${TARGET_ENGINE_VERSION}" \
--target-db-parameter-group-name pg17-orders-prod
# Watch replication and readiness; validate plans on green before going further
aws rds describe-blue-green-deployments \
--filters Name=blue-green-deployment-name,Values=orders-pg16-to-pg17 \
--query "BlueGreenDeployments[0].[Status,StatusDetails,SwitchoverDetails]"
# CONFIRMATION GATE: switchover moves production traffic. Proceed only with the change ticket approved,
# a manual snapshot of blue taken, and the rollback path (old blue retained as -old1) written into the ticket.
read -r -p "Type the change ticket ID to switch over: " TICKET && [ -n "$TICKET" ] || exit 1
aws rds switchover-blue-green-deployment \
--blue-green-deployment-identifier "${BGD_ID}" \
--switchover-timeout 300Cost engineering
Where Amazon RDS Support finds RDS savings, in the order we look
RDS bills are dominated by instance hours, storage and I/O, and, once a version ages out, Extended Support. The order matters in Amazon RDS Support cost work: right-size first, then change storage, then commit. Committing first locks in the wrong instance class for a year. Every figure we report is an estimate until it appears on the invoice, and no saving is taken at the expense of a recovery objective.
| Lever | Evidence we use | Typical finding | Watch-out |
|---|---|---|---|
| Fix the query before the instance | Statement ranking by total time, Database Insights load by wait | An instance sized for a missing index or an unbounded report | Re-measure after the fix; the instance class decision comes second |
| Right-size and move to Graviton | CPU, freeable memory, read and write IOPS over a full business cycle | Classes chosen at launch and never revisited | Test engine builds and extensions on the new architecture first |
| Storage type and IOPS | Provisioned versus consumed IOPS and throughput | io1 or gp2 volumes that gp3 covers, provisioned IOPS that are never used | Storage modifications trigger an optimisation period; schedule them |
| Aurora I/O-Optimized versus Standard | I/O charges as a share of cluster spend; AWS Compute Optimizer recommendations | I/O-heavy clusters paying per request | The switch is limited in frequency; decide on a full month of data |
| Idle replicas and snapshots | Replica connection and query counts; snapshot age and ownership | Replicas kept for a reporting job that moved away; manual snapshots with no owner | Confirm with the owning team before deletion, always |
| Commitments | Post-right-sizing steady state | Reserved instances or the Database Savings Plans AWS introduced in December 2025 | Model after right-sizing, never before |
| Extended Support | The exposure script above | Majors paying a per-vCPU surcharge with no upgrade date | Flagged as a Severity-2 finding in every health check |
Onboarding
The first 30 days of an Amazon RDS Support engagement
Nothing changes in your account until you have read our Amazon RDS Support assessment. The first month moves from inventory to stabilisation to a written runbook, and ends with the first timed restore drill, so steady-state support starts from measured numbers rather than assumptions.
Days 1–5 · Takeover assessment
Roles and credentials issued. Every RDS and Aurora instance inventoried: engine and version, class, storage, Multi-AZ and replica topology, parameter-group deltas from default, backup retention, Extended Support exposure and monitoring gaps. Output: a risk-ranked assessment with the evidence for each finding.
Days 6–15 · Stabilise
Severity-1 and Severity-2 findings fixed first: backup retention and PITR windows, alert routing to both on-call rotas, parameter values wrong for the instance class, replication-lag causes, storage and IOPS headroom. Every change carries current value, proposed value, apply type and rollback.
Days 16–30 · Runbook and drills
The runbook for your estate is written and reviewed with your team: failover, restore, escalation to AWS Support, maintenance calendar and the upgrade plan for any version approaching Extended Support. The first restore runs into a scratch instance and the measured recovery time is recorded.
From day 31 the Amazon RDS Support engagement is steady state: 24×7 coverage, a monthly health report with the metric behind every recommendation, quarterly failover and restore drills, and advisory hours for what your team is planning next.
Service levels and pricing
Amazon RDS Support severity matrix and commercial terms
Amazon RDS Support response targets are contractual and the same across every engine. Severity is set by business impact, and an S1 stays open with an engineer on it until service is restored, followed by a written root-cause analysis.
24×7 Amazon RDS Support and remote DBA retainers start at US $4,500 per quarter. That includes named engineers, the onboarding assessment of every RDS and Aurora instance in scope, the runbook, monitoring integration with CloudWatch, Database Insights, Prometheus or Datadog, a monthly health report, quarterly restore and failover drills, and advisory hours that roll into project work if unused.
Remote consulting is US $300 per hour and on-site consulting US $500 per hour plus travel; health checks, upgrades and migrations are quoted on a fixed scope. Amazon RDS Support sits within our AWS data platform engineering practice, alongside engine-specific PostgreSQL support, MySQL support and SQL Server support.
Test every change on a restored snapshot or a Blue/Green green first, keep manual snapshots before parameter and version changes, and maintain a robust disaster-recovery posture with cross-Region copies.
FAQ
Frequently asked questions about Amazon RDS Support
The questions we hear most often before an Amazon RDS Support engagement starts.
Which engines does MinervaDB Amazon RDS Support cover?
RDS for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle and Db2, plus Aurora PostgreSQL and Aurora MySQL, including Aurora Serverless v2 and Aurora Global Database. The deepest bench is on the PostgreSQL and MySQL families; SQL Server, Oracle and Db2 are covered by the same engineers who run those engines self-managed.
How is Amazon RDS Support different from AWS Support?
AWS Support covers the platform and the health of the service. Amazon RDS Support covers the database: query and index performance, parameter engineering, replication and failover procedures, upgrades, cost and incident response with root-cause analysis. Most clients hold both, and the Amazon RDS Support runbook defines when we escalate to AWS.
Can you get us off RDS Extended Support charges?
Yes. We inventory the affected instances with the exposure script, plan the major-version upgrades with a compatibility check and a Blue/Green or replica rehearsal, and execute them in your maintenance windows with a rollback path. MariaDB estates are planned against the hard end-of-support date because no Extended Support exists for them.
What access do you need to our AWS account?
A read-only cross-account IAM role with an external ID for observation, and a separate change role you enable per ticket. Database credentials come from your Secrets Manager or IAM database authentication. Every action appears in your CloudTrail with the engineer and ticket in the session name, and you can revoke both roles at any time.
Do you support Aurora as well as RDS?
Yes. Aurora PostgreSQL and Aurora MySQL are covered by the same team, including Global Database, Serverless v2, I/O-Optimized decisions and zero-ETL integrations into Redshift, which we check before every Blue/Green switchover.
How do you measure failover and recovery?
By drills, not documentation. We trigger failovers on a schedule and time them from the first application error to the first successful transaction, and we restore snapshots into scratch instances to record the real recovery time. Those numbers go into the runbook and the monthly report.
Can you take over from an outgoing DBA or another provider?
Yes. Onboarding starts with a takeover assessment that documents topology, parameter groups, backup state, Extended Support exposure and monitoring gaps, and produces the runbook we operate from. Nothing changes in your account until you have reviewed it.
Will you tell us if a workload should leave RDS?
Yes. We are vendor-neutral and do not resell AWS. When cost, extension requirements or control make self-managed PostgreSQL or MySQL on EC2 or Kubernetes the better answer, or when a workload belongs on a different engine entirely, we say so in writing before any project starts.
Put engine-level engineers behind your RDS estate
Start with a scoping call and an Extended Support exposure review of one Region. For an active production incident, the same page reaches the 24×7 Amazon RDS Support team.