August 6, 2016

How to restore a PostgreSQL database on Kubernetes

How to restore a PostgreSQL database on Kubernetes

As I wanted to transfer the database from one kubernetes cluster to a new one, I had to find a way to do this. And with a bit of trial and error I succeeded. So for future reference, and the hope that this might help someone, I figured I would write it down.

First we will transfer the database to our file system:

// pod-name         name of the postgres pod
// postgres-user    database user that is able to access the database
// database-name    name of the database
kubectl exec [pod-name] -- bash -c "pg_dump -U [postgres-user] [database-name]" > database.sql

This will download the specified database on your file system as database.sql. Now the following command will restore the database:

// pod-name         name of the postgres pod
// postgres-user    database user that is able to access the database
// database-name    name of the database
cat database.sql | kubectl exec -i [pod-name] -- psql -U [postgres-user] -d
[database-name]

Sources:

Jan Pieter Bruins Slot