Hola, favor de leer la sección sugerencia.
Flash back es otra cosa. Distinto a lo que te mencione de los ETL
(convertir los delete/update en solo insert ) para poder recuperarse de
estos errores.
El flash back es una opción donde puedes poner leer datos pasados en el
tiempo ( dependiendo de la retención ).
Ejemplo:
10:00 pm alguien hizo un delete de todos los registros y el sistema
tiene registros nuevos desde las 10:00 pm...
La forma de recuperarte es de dos formas ( con Oracle o postgres esta
forma es similar ), clonando la base de datos justo antes del delete. (
Lo ideal es que tengas auditado cuando alguien hace delete/truncate (
que no sea un usuario de aplicación ), para eso vas a tener que jugar
con los ACL y crear grant para poder auditar de forma correcta.
La otra forma ( solo se que Oracle tiene esta opción ), es con
FlashBack, es un área de recuperación online que tiene Oracle del tamaño
( que tu configures ), incluido guarda las tablas que borras, pasado el
tiempo X, se borran los datos. Pero básicamente es para recuperarse de
errores como esos, de esa forma puedes insertar de nuevo los datos o
crear una tabla con los datos antes que los modificaran.
https://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_fl.htm
Pero ojo, sin un audit, no sabes cuando paso eso...
## Sugerencia ##
Por lo que me comentas, los problemas no son del sistema, si no de los
desarrolladores, creo que lo que te hace falta hacer, es:
1. Cerrar acceso de producción a los desarrolladores.
2. Tener un proceso de respaldo lógico para cuando tengas que hacer
limpieza de datos.
3. Auditar de alguna forma delete masivos/update que no sean de la
aplicación.
4. Clonar producción de forma automatica para que los desarrolladores
hagan lo que quieran.
5. Generar un ambiente QA ( probar tu proceso antes de pasarlo a
producción).
6. Usar algo como cucumber o selenium ( para hacer pruebas automaticas
despues de aplicar el proceso en tu QA.
7. Hacer otra cosa con tu tiempo ya que tus problemas deberian desaparecer.
PS: Recuerda, que no hay sistemas a prueba de idiotas, y los idiotas son
super ingeniosos para romper cosas... solo hay formas de contenerlos lo
mejor posible.
On 11/21/2015 8:58 AM, Hellmuth Vargas wrote:
Hola Horacio Muchas gracias por el comentario
La inquietud surge porque estuve leyendo algo similar en Oracle
https://moisesespinosa.wordpress.com/2011/09/19/flashback-i-introduccion/
y dado que PostgreSQL implementa una replica retrasada pensé ..."y
porque no tener la posibilidad de ir aplicando los cambios paso a paso
hasta lograr la instantánea de los datos justo antes de que se hubiesen
borrado." en un caso hipotético que seria algo mas inmediato, expedito
que hacerlo por PITR
El 20 de noviembre de 2015, 2:41 p. m., Horacio
Miranda<hmira...@gmail.com <mailto:hmira...@gmail.com>> escribió:
Hola, para tu problema ( ignoro si esto es util ), en un cliente (
Oracle ) teniamos el mismo problema, la forma de solucionarlo fue
implemetnar Oracle Stream con WTL ( convirtiendo todos los update,
delete en insert ) para poder volver atras sin recuperar, la base de
datos era de unos 10 Teras eso si.
Ignoro si en postgresql existe una forma de replicar y modificar lo
que llega a la replica ( cosa de poder volver atras las transacciones ).
Si no existe sería un feature que valdría la pena trabajar y hacer. :D
On 11/21/2015 3:45 AM, Hellmuth Vargas wrote:
Buenos dias Lista
Dado que en algunas oportunidades (mas de las que quisiera) se
borran
datos de tablas,o incluso las tablas mismas, se actualizan con datos
errores, etc etc, etc (otro tema es que entren usuario con
privilegios a
hacer estas calamidades... ) para subsanar esto hay que restaurar
backups y con los WAL archivados restaurar los datos alterados, esto
toma tiempo, mas cuando las bases son grandes y mas cuando no se
sabe
exactamente la hora del suceso; para la versión 9.4 existe la
posibilidad de mantener una replica retasada un X tiempo
(http://www.depesz.com/2013/12/20/waiting-for-9-4-allow-time-delayed-standbys-and-recovery/)
que ayuda bastante, pues es una base EN LINEA con la foto de
nuestra
base de hace X tiempo, mas si el cambio fue antes de este tiempo, ni
modos... Entonces la pregunta es:
Que posibilidades hay de mantener una replica en linea retrasada X
tiempo (casi una semana, por ejemplo) pero que se pudiera
administrar la
aplicación de los WAL de forma manual, para permitir operaciones
como (todas ojala dentro de una transaccion para poder
devolver el
cambio en el caso que uno se 'pasara' de la hora del suceso):
- Aplicación de cambios hasta un timestamp defnido
- Aplicación de WAL interactivamente, algo como aplique el
siguiente WAL
para que por tanteo se pueda llegar a los datos mas próximos
antes de la
calamidad
Y con todas las bondades de las replicas en linea. Muchas
gracias Lista
y quedo atento a sus comentarios.
--
Cordialmente,
Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate
EnterpriseDB Certified PostgreSQL 9.3 Associate
--
Cordialmente,
Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate
EnterpriseDB Certified PostgreSQL 9.3 Associate
-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda