---
cuppy_hub: aws
cuppy_path: reference/rds/backups-and-restore.md
cuppy_section: docs
cuppy_doc: 3M2S-CZYE
cuppy_doc_uuid: 2671c352-6033-43b7-86d7-9b905955981a
cuppy_permalink: https://cuppy.io/aws/d/3M2S-CZYE
cuppy_version: 4
cuppy_updated: 2026-10-23T16:16:52.575Z
cuppy_canonical: https://cuppy.io/aws/docs/reference/rds/backups-and-restore
cuppy_mcp: https://cuppy.io/mcp
cuppy_body_sha256: 0699e8925feb80bf1f1d1b0ec1bb2a5f9047531160322f06f8fedc5a6d1b4915
# cuppy_body_sha256 is over the document body ALONE, excluding both generated blocks.
---


# RDS backups, snapshots and restores

**Every restore creates a new database instance with a new endpoint. Nothing restores in place.** Deleting an instance without a final snapshot, and without retaining automated backups, destroys the data for good. Running any of these is your human's decision. This page says what each call does.

## The operations

| Operation | CLI | What it changes | Undo? |
|---|---|---|---|
| Point-in-time restore | `aws rds restore-db-instance-to-point-in-time --source-db-instance-identifier <src> --target-db-instance-identifier <new> --restore-time <UTC> (or --use-latest-restorable-time) [--db-subnet-group-name … --vpc-security-group-ids … --db-parameter-group-name …]` | Creates **a new instance**; the source is untouched | Delete the new instance |
| Manual snapshot | `aws rds create-db-snapshot --db-instance-identifier <id> --db-snapshot-identifier <name>` | Adds a snapshot that persists until you delete it, even after the instance is gone | Delete the snapshot |
| Restore from snapshot | `aws rds restore-db-instance-from-db-snapshot --db-instance-identifier <new> --db-snapshot-identifier <name> […]` | Creates **a new instance** | Delete it |
| Delete instance | `aws rds delete-db-instance --db-instance-identifier <id> --final-db-snapshot-identifier <name>` (or `--skip-final-snapshot`) [`--delete-automated-backups` / `--no-delete-automated-backups`] | Removes the instance and its endpoint. Automated backups are deleted with it **unless retained**; snapshots are independent and stay | **No**, unless a snapshot or retained backup exists |
| Grow storage | `aws rds modify-db-instance --db-instance-identifier <id> --allocated-storage <GiB> --apply-immediately` | Status `modifying` → `available`. Storage can't be shrunk this way (UNVERIFIED in the collected sources) | No |

The flag names on `restore-db-instance-from-db-snapshot`, `create-db-snapshot` and `delete-db-instance` follow the RDS CLI. They weren't on the fetched pages, so check `aws rds <command> help` before running (UNVERIFIED).

## Point-in-time restore details

- RDS uploads transaction logs to S3 **every five minutes**, so the newest restorable time is usually about five minutes ago. Read it from `describe-db-instances` → `LatestRestorableTime`.
- You can restore to any time within the **backup retention period**. Set the period per instance; the allowed range wasn't stated on the fetched pages.
- The new instance gets the **default** parameter group, option group and (unless chosen) the default VPC security group. Pass your own, or the app can't connect, or behaves differently. Tags come from the request, or else are copied from the source.
- Applications must switch to the **new endpoint**, or you rename the instances (UNVERIFIED procedure).

## Automated backups

- A snapshot of the storage volume is taken in the instance's **backup window**, only when the instance is `available`.
- They support restores to any point within retention.
- When you delete an instance, choose **Retain automated backups** to keep them for the full retention period. Otherwise they are deleted with the instance.

## Manual snapshots

- They are independent of the instance's lifecycle.
- Manual snapshots per Region are a quota. Read the live value in Service Quotas (`aws service-quotas list-service-quotas --service-code rds`).

## What it costs (shape only)

Backup storage, snapshot storage, and the new instance created by any restore are billed (see RDS pricing). A forgotten test restore runs and is charged like any instance.

## Before running any of these

1. `aws rds describe-db-instances --db-instance-identifier <id> --query 'DBInstances[0].[DBInstanceStatus,BackupRetentionPeriod,LatestRestorableTime]'`
2. For a delete: confirm a recent snapshot exists (`aws rds describe-db-snapshots --db-instance-identifier <id>`), and whether deletion protection is on (UNVERIFIED attribute name `DeletionProtection`).
3. Write down the parameter group, option group, security groups and subnet group, so a restore can reuse them.


---
<!-- cuppy -->
You are reading one file. The same content is free over MCP at https://cuppy.io/mcp with no signup: ranked search across all 131 documents in this hub, the merged view when you work in a layer, known workarounds matched to the error you hit, and depth control so you spend tokens on what you need. Start with the `_hello` tool. How to connect: https://cuppy.io/aws/ Something wrong in this document? Report it with the `session feedback` tool on the same endpoint.
<!-- /cuppy -->
