zero downtime postgres upgrades
TRANSCRIPT
![Page 1: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/1.jpg)
Zero-downtime Postgres upgrades
Restarting databases without the apps noticing
@ChrisSinjo
![Page 2: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/2.jpg)
GOCARDLESS
![Page 3: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/3.jpg)
POST /cash/monies HTTP/1.1
{ amount: 100 }
💰💰💰
![Page 4: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/4.jpg)
High 💵 per-request
![Page 5: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/5.jpg)
Uptime is 🔑
![Page 6: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/6.jpg)
![Page 7: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/7.jpg)
Good durability guarantees
![Page 8: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/8.jpg)
Good durability guarantees
Feature-cautious
![Page 9: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/9.jpg)
Good durability guarantees
Feature-cautious
Transactions are cool
![Page 10: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/10.jpg)
–Postgres
“Speak to this one node.”
![Page 11: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/11.jpg)
Client
Postgres
![Page 12: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/12.jpg)
Client
PostgresPostgresReplication
![Page 13: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/13.jpg)
Client
PostgresPostgresReplication
![Page 14: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/14.jpg)
Wake a human up
![Page 15: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/15.jpg)
Client
PostgresPostgresReplication
![Page 16: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/16.jpg)
Client
PostgresPostgres
![Page 17: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/17.jpg)
Client
PostgresPostgres
![Page 18: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/18.jpg)
Client
PostgresPostgresReplication
![Page 19: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/19.jpg)
Awful time-to-recovery
Error-prone
![Page 20: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/20.jpg)
You gotta perform:
- Many steps - In the right order - Perfectly
![Page 21: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/21.jpg)
Don’t make a
tired SRE think
![Page 22: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/22.jpg)
Add automation
![Page 23: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/23.jpg)
Pacemaker
A clustering tool
![Page 24: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/24.jpg)
Client
PostgresPostgresReplication
![Page 25: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/25.jpg)
How do we know a node has failed?
![Page 28: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/28.jpg)
Client
PostgresPostgresReplication
![Page 29: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/29.jpg)
Client
PostgresPostgresPostgresRepl Repl
![Page 30: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/30.jpg)
Client
PostgresPostgresPostgres Repl Repl
Pacemaker Pacemaker Pacemaker
![Page 31: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/31.jpg)
Client
PostgresPostgresPostgres Repl Repl
Pacemaker Pacemaker Pacemaker
VIP
![Page 32: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/32.jpg)
Client
PostgresPostgresPostgres Repl Repl
Pacemaker Pacemaker Pacemaker
VIP
![Page 33: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/33.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
VIP
![Page 34: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/34.jpg)
PostgresPostgresPostgresRepl
Pacemaker Pacemaker Pacemaker
Client
VIP
![Page 35: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/35.jpg)
PostgresPostgresPostgresRepl
Pacemaker Pacemaker Pacemaker
Client
VIP
![Page 36: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/36.jpg)
PostgresPostgresPostgresRepl
Pacemaker Pacemaker Pacemaker
Client
VIP
![Page 37: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/37.jpg)
Client
PostgresPostgresPostgres Repl
Repl
VIP
Pacemaker Pacemaker Pacemaker
![Page 38: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/38.jpg)
$💯
![Page 39: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/39.jpg)
Seems hard, right?
![Page 40: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/40.jpg)
It kinda is
![Page 41: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/41.jpg)
You gotta know:
- Postgres - Distributed systems - Pacemaker
![Page 42: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/42.jpg)
Get someone else to run it for you
![Page 43: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/43.jpg)
Client
PostgresPostgresPostgres Repl Repl
Pacemaker Pacemaker Pacemaker
VIP
![Page 44: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/44.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
VIP
![Page 45: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/45.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
VIP
![Page 46: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/46.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
VIP
![Page 47: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/47.jpg)
Every move means a connection reset
![Page 48: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/48.jpg)
Every move means dropped requests
![Page 49: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/49.jpg)
POST /cash/monies HTTP/1.1
{ amount: 100 }
💰💰💰
![Page 50: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/50.jpg)
POST /cash/monies HTTP/1.1
{ amount: 100 }
500 Internal Server Error
![Page 51: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/51.jpg)
What does this mean for upgrades?
![Page 52: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/52.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
VIP
![Page 53: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/53.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
9.4.9 9.4.9 9.4.9
VIP
![Page 54: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/54.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
9.4.9 9.4.9 9.4.9
Repl Repl
VIP
![Page 55: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/55.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
9.4.10 9.4.9 9.4.10
Repl Repl
VIP
![Page 56: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/56.jpg)
Client
PostgresPostgresPostgres Repl
Repl
VIP
Pacemaker Pacemaker Pacemaker
9.4.10 9.4.9 9.4.10
![Page 57: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/57.jpg)
Every upgrade means a connection reset
![Page 58: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/58.jpg)
Every upgrade means dropped requests
![Page 59: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/59.jpg)
POST /cash/monies HTTP/1.1
{ amount: 100 }
500 Internal Server Error
![Page 60: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/60.jpg)
Solution: never upgrade
![Page 61: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/61.jpg)
🙄
![Page 62: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/62.jpg)
Not upgrading is
never an option
![Page 63: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/63.jpg)
Solution: never upgrade
![Page 64: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/64.jpg)
Solution: never upgrade
![Page 65: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/65.jpg)
Solution: ???
![Page 66: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/66.jpg)
1thing missing
![Page 67: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/67.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
VIP
![Page 68: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/68.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
PgBouncerPgBouncer PgBouncerVIP
![Page 69: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/69.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
PgBouncerPgBouncer PgBouncerVIP
![Page 70: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/70.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
PgBouncerPgBouncer PgBouncerVIP
VIP
![Page 71: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/71.jpg)
PgBouncer has This One Weird Trick™
![Page 72: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/72.jpg)
PAUSE;
![Page 73: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/73.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
PgBouncerPgBouncer PgBouncerVIP
VIP
![Page 74: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/74.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
PgBouncerPgBouncer PgBouncerVIP
VIP
PAUSE;
![Page 75: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/75.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
PgBouncerPgBouncer PgBouncerVIP
PAUSE;
VIP
![Page 76: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/76.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
PgBouncerPgBouncer PgBouncerVIP
PAUSE;
VIP
![Page 77: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/77.jpg)
So what does this mean for upgrades?
![Page 78: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/78.jpg)
Client
PostgresPostgresPostgres
Pacemaker Pacemaker Pacemaker
PgBouncerPgBouncer PgBouncerVIP
VIP
![Page 79: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/79.jpg)
Client
PostgresPostgresPostgres
PgBouncerPgBouncer PgBouncerVIP
VIP
![Page 80: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/80.jpg)
Client
PostgresPostgresPostgres
PgBouncerPgBouncer PgBouncerVIP
VIP
9.4.10 9.4.9 9.4.10
![Page 81: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/81.jpg)
Client
PostgresPostgresPostgres
PgBouncerPgBouncer PgBouncerVIP
VIP
9.4.10 9.4.9 9.4.10
PAUSE;
![Page 82: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/82.jpg)
Client
PostgresPostgresPostgres
PgBouncerPgBouncer PgBouncerVIP
9.4.10 9.4.9 9.4.10
VIP
PAUSE;
![Page 83: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/83.jpg)
Client
PostgresPostgresPostgres
PgBouncerPgBouncer PgBouncerVIP
9.4.10 9.4.9 9.4.10
VIP
RESUME;
![Page 84: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/84.jpg)
Client
PostgresPostgresPostgres
PgBouncerPgBouncer PgBouncerVIP
9.4.10 9.4.10 9.4.10
VIP
RESUME;
![Page 85: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/85.jpg)
$💯
![Page 86: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/86.jpg)
Caveats
![Page 87: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/87.jpg)
Minor versions
![Page 88: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/88.jpg)
9.4.9 → 9.4.10
![Page 89: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/89.jpg)
pglogical
![Page 90: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/90.jpg)
Minor versions
Long-running transactions
![Page 91: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/91.jpg)
while(running_queries): if(now > timeout): abandon_migration else: sleep(0.1)
promote_new_primary
![Page 92: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/92.jpg)
Minor versions
Long-running transactions
Pause length
![Page 93: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/93.jpg)
7-10s total
![Page 94: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/94.jpg)
$💯
![Page 95: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/95.jpg)
One more thing… (#sorrynotsorry)
![Page 97: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/97.jpg)
We’re hiring✌❤
@ChrisSinjo @GoCardlessEng
![Page 98: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/98.jpg)
Thank you✌❤
@ChrisSinjo @GoCardlessEng
![Page 99: Zero Downtime Postgres Upgrades](https://reader033.vdocuments.net/reader033/viewer/2022042517/58ec1a7e1a28ab70538b459d/html5/thumbnails/99.jpg)
Questions?✌❤
@ChrisSinjo @GoCardlessEng