fix(backup): clean UAT schema before restore and add --no-owner --no-privileges to pg_dump
This commit is contained in:
+12
-4
@@ -88,11 +88,11 @@ if [ "$STATUS" = "SUCCESS" ]; then
|
|||||||
# Vérification si le conteneur Docker est actif
|
# Vérification si le conteneur Docker est actif
|
||||||
if command -v docker >/dev/null 2>&1 && docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
if command -v docker >/dev/null 2>&1 && docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
||||||
log "Mode détection: Conteneur Docker '${CONTAINER_NAME}' trouvé. Utilisation de pg_dump via docker exec."
|
log "Mode détection: Conteneur Docker '${CONTAINER_NAME}' trouvé. Utilisation de pg_dump via docker exec."
|
||||||
docker exec -e PGPASSWORD="${DB_PASSWORD}" "${CONTAINER_NAME}" pg_dump -U "${DB_USER}" -d "${DB_NAME}" | gzip > "$DUMP_PATH" 2>> "$LOG_FILE"
|
docker exec -e PGPASSWORD="${DB_PASSWORD}" "${CONTAINER_NAME}" pg_dump --no-owner --no-privileges -U "${DB_USER}" -d "${DB_NAME}" | gzip > "$DUMP_PATH" 2>> "$LOG_FILE"
|
||||||
DUMP_EXIT_CODE=${PIPESTATUS[0]}
|
DUMP_EXIT_CODE=${PIPESTATUS[0]}
|
||||||
else
|
else
|
||||||
log "Mode détection: Exécution directe de pg_dump (hôte local)."
|
log "Mode détection: Exécution directe de pg_dump (hôte local)."
|
||||||
PGPASSWORD="${DB_PASSWORD}" pg_dump -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" | gzip > "$DUMP_PATH" 2>> "$LOG_FILE"
|
PGPASSWORD="${DB_PASSWORD}" pg_dump --no-owner --no-privileges -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" | gzip > "$DUMP_PATH" 2>> "$LOG_FILE"
|
||||||
DUMP_EXIT_CODE=${PIPESTATUS[0]}
|
DUMP_EXIT_CODE=${PIPESTATUS[0]}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -110,6 +110,8 @@ fi
|
|||||||
if [ "$STATUS" = "SUCCESS" ] && [ "$ENABLE_UAT_RESTORE" = "true" ]; then
|
if [ "$STATUS" = "SUCCESS" ] && [ "$ENABLE_UAT_RESTORE" = "true" ]; then
|
||||||
log "Démarrage de la restauration et l'anonymisation sur UAT (${UAT_DB_USER}@${UAT_DB_HOST}:${UAT_DB_PORT}/${UAT_DB_NAME})..."
|
log "Démarrage de la restauration et l'anonymisation sur UAT (${UAT_DB_USER}@${UAT_DB_HOST}:${UAT_DB_PORT}/${UAT_DB_NAME})..."
|
||||||
|
|
||||||
|
CLEAN_SCHEMA_SQL="DROP SCHEMA IF EXISTS public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO ${UAT_DB_USER}; GRANT ALL ON SCHEMA public TO public;"
|
||||||
|
|
||||||
ANONYMIZE_SQL="
|
ANONYMIZE_SQL="
|
||||||
UPDATE adherent SET
|
UPDATE adherent SET
|
||||||
nom = 'Nom_Adherent_' || id,
|
nom = 'Nom_Adherent_' || id,
|
||||||
@@ -145,7 +147,10 @@ UPDATE educateur SET
|
|||||||
RESTORE_SUCCESS=false
|
RESTORE_SUCCESS=false
|
||||||
|
|
||||||
if command -v psql >/dev/null 2>&1; then
|
if command -v psql >/dev/null 2>&1; then
|
||||||
log "Restauration UAT via psql local..."
|
log "Réinitialisation du schéma public sur UAT..."
|
||||||
|
PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$CLEAN_SCHEMA_SQL" >> "$LOG_FILE" 2>&1
|
||||||
|
|
||||||
|
log "Restauration du dump Prod vers UAT..."
|
||||||
if gunzip -c "$DUMP_PATH" | PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" >> "$LOG_FILE" 2>&1; then
|
if gunzip -c "$DUMP_PATH" | PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" >> "$LOG_FILE" 2>&1; then
|
||||||
log "Exécution des requêtes d'anonymisation sur UAT..."
|
log "Exécution des requêtes d'anonymisation sur UAT..."
|
||||||
if PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$ANONYMIZE_SQL" >> "$LOG_FILE" 2>&1; then
|
if PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$ANONYMIZE_SQL" >> "$LOG_FILE" 2>&1; then
|
||||||
@@ -153,7 +158,10 @@ UPDATE educateur SET
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
elif command -v docker >/dev/null 2>&1; then
|
elif command -v docker >/dev/null 2>&1; then
|
||||||
log "Restauration UAT via conteneur Docker postgres..."
|
log "Réinitialisation du schéma public sur UAT via Docker..."
|
||||||
|
docker run --rm --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$CLEAN_SCHEMA_SQL" >> "$LOG_FILE" 2>&1
|
||||||
|
|
||||||
|
log "Restauration du dump Prod vers UAT via Docker..."
|
||||||
if gunzip -c "$DUMP_PATH" | docker run --rm -i --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" >> "$LOG_FILE" 2>&1; then
|
if gunzip -c "$DUMP_PATH" | docker run --rm -i --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" >> "$LOG_FILE" 2>&1; then
|
||||||
log "Exécution des requêtes d'anonymisation sur UAT via Docker..."
|
log "Exécution des requêtes d'anonymisation sur UAT via Docker..."
|
||||||
if docker run --rm --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$ANONYMIZE_SQL" >> "$LOG_FILE" 2>&1; then
|
if docker run --rm --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$ANONYMIZE_SQL" >> "$LOG_FILE" 2>&1; then
|
||||||
|
|||||||
Reference in New Issue
Block a user