De postgres pg_dump(all) bestanden bevatten uitvoerbare SQL statements. Het restoren bestaat uit het uitvoeren van deze files
# Decomprimeren indien nodig
unzip <pg_dump_bestand.sql.gz>
# Uitvoeren van SQL statements
psql -h <db-host> -U <superuser> -f <pg_dump_bestand.sql>
De procedure staat uitvoerig beschreven in [[Backup & Restore]]
Deze methodiek kan gebruikt worden om een restore vanuit een bestaand [[Backup]] object te maken.
# Source: pro-cnpg/templates/cluster.yaml
apiVersion: postgresql.cnpg.io/v1
kind: Cluster # https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1
metadata:
name: postgresql
spec:
imageName: "ghcr.io/cloudnative-pg/postgresql:16.2-7"
instances: 3 # When using only 1 instance (not high-available), then add "enablePDB: false", in order to allow pod eviction on (node) maintenance
superuserSecret:
name: postgresql-user
...
bootstrap:
recovery:
backup:
name: backup-schedule-20240821060000
...
storage:
size: 10Gi
```
### Restore vanuit MinIO objectstore
Met deze methodiek wordt een cluster uit een barman backup vanuit een MinIO store opnieuw opgebouwd.
```yaml
# Source: pro-cnpg/templates/cluster.yaml
apiVersion: postgresql.cnpg.io/v1
kind: Cluster # https://cloudnative-pg.io/documentation/current/cloudnative-pg.v1
metadata:
name: postgresql
spec:
imageName: "ghcr.io/cloudnative-pg/postgresql:16.2-7"
instances: 3 # When using only 1 instance (not high-available), then add "enablePDB: false", in order to allow pod eviction on (node) maintenance
superuserSecret:
name: postgresql-user
...
bootstrap:
recovery:
source: clusterBackup
externalClusters:
- name: clusterBackup
barmanObjectStore:
endpointURL: http://minio.objstorage.svc.cluster.local:9000 # Existing Minio - sp-demo/spri-minio-tst
destinationPath: s3://postgresql-backups
s3Credentials:
inheritFromIAMRole: false # Use existing credentials - https://cloudnative-pg.io/documentation/current/api_reference/#s3credentials
accessKeyId:
key: userName
name: minio-user
secretAccessKey:
key: userPassword
name: minio-user
wal:
maxParallel: 8
...
storage:
size: 10Gi
Bij deze methode wordt standaard de naam van de cluster gebruikt om de map met de barman backups te vinden. Indien dit afwijkt kan de naam expliciet met barmanObjectStore.serverName gespecificeerd worden.
# bucket layout van voorbeeld MinIO store
postgresql-backups
|--my-database
| |--base
| |--wals