feat(postgres): dump with exclude_tables
This commit is contained in:
@@ -278,9 +278,20 @@ psql *args='':
|
|||||||
|
|
||||||
# Dump Postgres database by pg_dump
|
# Dump Postgres database by pg_dump
|
||||||
[no-cd]
|
[no-cd]
|
||||||
dump db_name file:
|
dump db_name file exclude_tables='':
|
||||||
|
#!/bin/bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
DUMP_OPTIONS="-Fc"
|
||||||
|
if [ -n "{{ exclude_tables }}" ]; then
|
||||||
|
IFS=',' read -ra TABLES <<< "{{ exclude_tables }}"
|
||||||
|
for table in "${TABLES[@]}"; do
|
||||||
|
DUMP_OPTIONS="$DUMP_OPTIONS --exclude-table=$table"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
kubectl exec -i -n ${CNPG_NAMESPACE} postgres-cluster-1 -c postgres -- bash -c \
|
kubectl exec -i -n ${CNPG_NAMESPACE} postgres-cluster-1 -c postgres -- bash -c \
|
||||||
"pg_dump -d postgresql://$(just postgres::admin-username):$(just postgres::admin-password)@localhost/{{ db_name }} -Fc > \
|
"pg_dump -d postgresql://$(just postgres::admin-username):$(just postgres::admin-password)@localhost/{{ db_name }} $DUMP_OPTIONS > \
|
||||||
/var/lib/postgresql/data/db.dump"
|
/var/lib/postgresql/data/db.dump"
|
||||||
kubectl cp -n ${CNPG_NAMESPACE} -c postgres \
|
kubectl cp -n ${CNPG_NAMESPACE} -c postgres \
|
||||||
postgres-cluster-1:/var/lib/postgresql/data/db.dump {{ file }}
|
postgres-cluster-1:/var/lib/postgresql/data/db.dump {{ file }}
|
||||||
@@ -293,6 +304,6 @@ restore db_name file:
|
|||||||
kubectl cp {{ file }} -n ${CNPG_NAMESPACE} -c postgres \
|
kubectl cp {{ file }} -n ${CNPG_NAMESPACE} -c postgres \
|
||||||
postgres-cluster-1:/var/lib/postgresql/data/db.dump
|
postgres-cluster-1:/var/lib/postgresql/data/db.dump
|
||||||
kubectl exec -i -n ${CNPG_NAMESPACE} postgres-cluster-1 -c postgres -- bash -c \
|
kubectl exec -i -n ${CNPG_NAMESPACE} postgres-cluster-1 -c postgres -- bash -c \
|
||||||
"pg_restore --clean --if-exists --no-owner --no-privileges \
|
"pg_restore --clean --if-exists \
|
||||||
-d postgresql://$(just postgres::admin-username):$(just postgres::admin-password)@localhost/{{ db_name }} \
|
-d postgresql://$(just postgres::admin-username):$(just postgres::admin-password)@localhost/{{ db_name }} \
|
||||||
/var/lib/postgresql/data/db.dump"
|
/var/lib/postgresql/data/db.dump"
|
||||||
|
|||||||
Reference in New Issue
Block a user