<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/zero-downtime-postgres-migration-from-rds-to-prisma-postgres-mrtqze7k5" -->

---
title: Zero-Downtime Postgres Migration from RDS to Prisma Postgres
description: Prisma moved its production control plane database, 83 tables and 74 GB, from Amazon RDS to Prisma Postgres with zero downtime in September 2026. The team used...
canonical: https://daily.dev/posts/zero-downtime-postgres-migration-from-rds-to-prisma-postgres-mrtqze7k5
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Zero-Downtime Postgres Migration from RDS to Prisma Postgres | daily.dev
og:description: Prisma moved its production control plane database, 83 tables and 74 GB, from Amazon RDS to Prisma Postgres with zero downtime in September 2026. The team used...
og:url: https://daily.dev/posts/zero-downtime-postgres-migration-from-rds-to-prisma-postgres-mrtqze7k5
og:image: https://api.daily.dev/og/posts/mrTqzE7K5.png
og:image:alt: Zero-Downtime Postgres Migration from RDS to Prisma Postgres
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Zero-Downtime Postgres Migration from RDS to Prisma Postgres

**[Prisma Blog](https://daily.dev/sources/prisma-blog)** · 20 min read · 0 upvotes · 0 comments

## Summary

Prisma moved its production control plane database, 83 tables and 74 GB, from Amazon RDS to Prisma Postgres with zero downtime in September 2026. The team used Postgres logical replication to copy data while writes continued, then cut over all services in one deployment. The last write hit RDS seven minutes after the merge. They kept a rollback path open for a week by reversing replication with copy_data off and origin none, before finally stopping the RDS instances. An AI coding agent, Claude Code, prepared and checked each SQL step while an engineer ran every statement against production.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.prisma.io/blog/moving-prismas-control-plane-to-prisma-postgres>

## Questions this post answers

### Can Postgres logical replication copy schema changes like ALTER TABLE automatically?

No, logical replication only carries row changes such as inserts, updates, and deletes, not DDL or sequence values. Every migration must be applied manually or via CI to both the publisher and subscriber databases. If a migration adds a column on only one side, replication stops at the first row change using that column and retries until the schema matches on both sides.

_Anyone planning a zero-downtime database migration can study replication edge cases like this on daily.dev._

### How do you roll back a Postgres database migration without losing data after cutover?

Keep the old database as a live copy of the new one by creating a replication slot on the new database minutes before cutover, then once the old database stops receiving writes, subscribe it to the new database from that slot with copy_data = false and origin = none (Postgres 16+). Rolling back is then just a config change with no data loss, as long as every schema change is applied to both databases while the rollback window is open.

_Teams weighing migration safety nets can compare rollback strategies like this on daily.dev._

### How long did Prisma's production database stay writable on the old server during its RDS to Prisma Postgres cutover?

The control plane database, 83 tables and 74 GB, received its last write on Amazon RDS seven minutes after the deployment that switched services to Prisma Postgres, with no maintenance window. This was possible because logical replication let the new database follow the old one in near real time rather than requiring a dump and restore with writes paused.

_Engineers scoping migration downtime windows can benchmark real cutover timelines like this on daily.dev._

## Similar posts on daily.dev

- [Automating RDS Postgres to Aurora Postgres Migration](https://daily.dev/posts/automating-rds-postgres-to-aurora-postgres-migration-fef7rzlgb) · Netflix TechBlog · 13 upvotes · 0 comments
- [Zero-downtime Postgres upgrades with logical replication](https://daily.dev/posts/zero-downtime-postgres-upgrades-with-logical-replication-akytbotk7) · Planet PostgreSQL · 0 upvotes · 0 comments
- [From Local Development to Production with Prisma Postgres](https://daily.dev/posts/from-local-development-to-production-with-prisma-postgres-3vyh7ogqp) · Prisma Blog · 0 upvotes · 0 comments
- [How we migrated Clera’s 500 GB production database to ClickHouse Managed Postgres overnight](https://daily.dev/posts/how-we-migrated-clera-s-500-gb-production-database-to-clickhouse-managed-postgres-overnight-vjiq1dqwf) · ClickHouse · 4 upvotes · 1 comments

---

Tags: [#aws](https://daily.dev/tags/aws), [#database](https://daily.dev/tags/database), [#postgresql](https://daily.dev/tags/postgresql), [#prisma](https://daily.dev/tags/prisma)

[View this post on daily.dev](https://daily.dev/posts/zero-downtime-postgres-migration-from-rds-to-prisma-postgres-mrtqze7k5)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Zero-Downtime Postgres Migration from RDS to Prisma Postgres","url":"https://daily.dev/posts/zero-downtime-postgres-migration-from-rds-to-prisma-postgres-mrtqze7k5","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/zero-downtime-postgres-migration-from-rds-to-prisma-postgres-mrtqze7k5"},"datePublished":"2026-10-26T13:15:38.516Z","dateModified":"2026-10-26T13:20:16.516Z","description":"Prisma moved its production control plane database, 83 tables and 74 GB, from Amazon RDS to Prisma Postgres with zero downtime in September 2026. The team used...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9d5199b148e714eb78c931858e107a02?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9d5199b148e714eb78c931858e107a02?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Prisma Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Prisma Blog","logo":"https://media.daily.dev/image/upload/s--wjA5CgSL--/f_auto,q_auto/v1780213432/logos/prisma-blog?_a=BAMAMiWQ0","url":"https://daily.dev/sources/prisma-blog"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/zero-downtime-postgres-migration-from-rds-to-prisma-postgres-mrtqze7k5","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"aws,database,postgresql,prisma","timeRequired":"PT20M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Prisma Blog","item":"https://daily.dev/sources/prisma-blog"},{"@type":"ListItem","position":3,"name":"Zero-Downtime Postgres Migration from RDS to Prisma Postgres"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/zero-downtime-postgres-migration-from-rds-to-prisma-postgres-mrtqze7k5#faq","mainEntity":[{"@type":"Question","name":"Can Postgres logical replication copy schema changes like ALTER TABLE automatically?","acceptedAnswer":{"@type":"Answer","text":"No, logical replication only carries row changes such as inserts, updates, and deletes, not DDL or sequence values. Every migration must be applied manually or via CI to both the publisher and subscriber databases. If a migration adds a column on only one side, replication stops at the first row change using that column and retries until the schema matches on both sides. Anyone planning a zero-downtime database migration can study replication edge cases like this on daily.dev."}},{"@type":"Question","name":"How do you roll back a Postgres database migration without losing data after cutover?","acceptedAnswer":{"@type":"Answer","text":"Keep the old database as a live copy of the new one by creating a replication slot on the new database minutes before cutover, then once the old database stops receiving writes, subscribe it to the new database from that slot with copy_data = false and origin = none (Postgres 16+). Rolling back is then just a config change with no data loss, as long as every schema change is applied to both databases while the rollback window is open. Teams weighing migration safety nets can compare rollback strategies like this on daily.dev."}},{"@type":"Question","name":"How long did Prisma's production database stay writable on the old server during its RDS to Prisma Postgres cutover?","acceptedAnswer":{"@type":"Answer","text":"The control plane database, 83 tables and 74 GB, received its last write on Amazon RDS seven minutes after the deployment that switched services to Prisma Postgres, with no maintenance window. This was possible because logical replication let the new database follow the old one in near real time rather than requiring a dump and restore with writes paused. Engineers scoping migration downtime windows can benchmark real cutover timelines like this on daily.dev."}}]}
```

