Buen día. Tenemos que anonimizar una base guarani, pero nos surge el siguiente problema:
Luego de anonimizar la base con el comando ./guarani anonimizar_base, queremos restaurar dicha base anonimizada, pero solamente se crea el esquema y las tablas, sin los datos de las mismas. Las pruebas que hicimos fueron las siguientes:
Probamos corriendo el restore con diferentes comandos:
Probamos agregando el flag -t para que restaure todos los schemas.
Dentro del archivo backup_anonimizado_3.20.0.sql, podemos observar los datos y estan correctamente anonimizados.
Esto lo probamos en la version 3.20.0, no sabemos si se tratará de un error o estamos haciendo algo mal nosotros.
Espero que nos puedan dar una mano. Muchas gracias, saludos.
Hola,
“como generaron el archivo backup_anonimizado.sql ?”
-Lo generamos en …/guarani/bin corriendo el comando $ ./guarani backup_anonimizado
Luego el archivo se almacena en …/guarani/BD/tmp
“se podrian fijar si ese archivo tiene los CREATE TABLE y los COPY con los datos anonimizados ?”
Si, tiene los create table y los copy con los datos anonimizados correctamente.
Corrimos el comando psql y se creó la base anonimizada, con el esquema negocio y las tablas creadas, pero nuevamente sin contenido dentro de las mismas. Con respecto al archivo error.txt, no hay un error puntual que pare el restore, sino que aparecen los create function, create type, etc. A su vez, dentro del archivo hay algunos errores, como por ejemplo:
insert or update on table “sga_planes_certificados” violates foreign key constraint “fk_sga_planes_certificados_sga_certificados”
El archivo sql como se genero ? se genero con un pg_dump ?
Para mi lo que esta sucediendo es que en cierto momento el psql comienza a dar errores , como el violates foreign key constraint “fk_sga_planes_certificados_sga_certificados”
y las tablas no se cargan. el psql sigue intentando con las siguientes instrucciones, pero ya la base tiene tablas vacias o a medio cargar
O sea que hay que ver como se genera el archivo .sql o mirar cual es el primer error que se produce en el psql y de ahi empezar a ver cual puede ser la causa
Hola Ignacio, disculpame la demora.
Paso a responderte:
“El archivo sql como se genero ? se genero con un pg_dump ?” Los pasos realizados fueron,
Crear una base con los mismos parametros que guarani1, pero llamada guarani1anon
Corrimos el comando ./guarani backup_anonimizado dentro de /bin
Al correr el comando, se ejecuta lo siguiente: pg_dump -O -n negocio -h localhost -U postgres -p 5432 guarani1 | /usr/local/proyectos/guarani/BD/Anonimizacion/bin/mask >> /usr/local/proyectos/guarani/BD/tmp/backup_anonimizado_3.20.0.sql
Corrimos el comando psql guarani1anon < backup_anonimizado_3.20.0.sql >>error.txt 2>>error.txt en /BD/tmp
“o mirar cual es el primer error que se produce en el psql y de ahi empezar a ver cual puede ser la causa”
El primer error que aparece en el archivo error.txt se encuentra en la captura que adjunté.
el proceso de anonimizacion tiene 2 grandes etapas
1- generacion de un pg_dump con los valores de los datos cambiados por valores anonimos (esa parte parece andar bien), pero no incluye los data types
2- importacion usando un psql del backup anonimizado, esta parte falla porque hay (al menos uno) data type que no esta incluido en el backup
mi sugerencia, es alterar un poco la secuencia que usan para restaurar la base anonimizada haciendo algo asi
2.1 crear base vacia
2.2 crear el data type que da error (puedes extrar el comando de creacion de la base original)
2.3 ejecutar el psql ta cual (usando los >>error.txt y 2>>error.txt) por si hubiera otro error mas
Buen día Ignacio. Se pudo solucionar siguiendo los pasos que nos indicaste! creamos el type que daba error en el esquema public.
Se pudo anonimizar correctamente. Muchas gracias Ignacio!