update commands for postgres #13

Merged
LiamPietralla merged 2 commits from fix/postgres into main 2025-10-20 12:23:58 +11:00

View File

@@ -2,20 +2,38 @@
Handy commands for dumping and restoring Postgres databases. Handy commands for dumping and restoring Postgres databases.
:::info ::: info
Most of these commands are run using Docker as then we don't need to have Postgres installed locally. Most of these commands are run using Docker as then we don't need to have Postgres installed locally.
If a different version of Postgres is needed, just change the version number in the Docker image tag. If a different version of Postgres is needed, just change the version number in the Docker image tag.
::: :::
## Setup
Create a pgpass file in the current directory with the following content:
```
<server>:<port>:<database>:<username>:<password>
```
::: tip
Use `*` as a wildcard for any of the fields except for the password.
:::
## Dumping a Database ## Dumping a Database
```bash ```bash
docker run --network host --rm -v .:/tmp -e PGPASSWORD=mysecretpassword postgres:16 pg_dump -h localhost -U myuser -d mydb -f /tmp/dump.sql docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && pg_dump -h <server> -p <port> -U <username> <database> -f /tmp/$(date +%Y%m%d_%H%M%S)_<database>_dump.sql -c --if-exists"
``` ```
## Restoring a Database ## Dumping a Cluster
```bash ```bash
docker run --network host --rm -v .:/tmp -e PGPASSWORD=mysecretpassword postgres:16 psql -h localhost -U myuser -d mydb -f /tmp/dump.sql docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && pg_dumpall -h <server> -p <port> -U <username> -f /tmp/$(date +%Y%m%d_%H%M%S)_<server>_cluster_dump.sql -c --if-exists"
```
## Restoring from a SQL Dump
```bash
docker run --network host --rm -v .:/tmp -v ./pgpass:/root/.pgpass -e PGPASSFILE=/root/.pgpass postgres:16 bash -c "chmod 600 /root/.pgpass && psql -h <server> -p <port> -U <username> <database> -f /tmp/dump.sql -X"
``` ```