Skip site navigation (1) Skip section navigation (2)

Re: que hay de PITR ... ?

From: Andrés Aquino <andres(dot)aquino(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: que hay de PITR ... ?
Date: 2006-02-23 22:17:20
Message-ID: E4A87C2F-E697-4664-ABF6-22A300902D79@gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
>>>
>> Tengo una versión 8.0.1 y basandome en la documentación
>> http://www.postgresql.org/docs/8.0/interactive/backup-online.html
>> y en los parámetros de la configuración,  tengo activado el WAL...
>
> WAL siempre esta activado; no es posible desactivarlo.
Ok.

>
>> pregunta: tengo que hacer algo más para configurar el PITR ?
>
> Si, tienes que definir archive_command.
Ok, lo voy a definir.

>
>> plantee mal la oración, efectivamente no borre la tabla, lo que borre
>> fueron los registros.
>
> Ok, eso es muy distinto.  Como te decia, lo que tienes que hacer es
> hacer parecer que la transaccion que vacio la tabla nunca sucedio  
> (o mas
> bien, que no fue comprometida sino abortada).  El primer paso es tomar
> pg_filedump (http://sources.redhat.com/rhdb si mal no recuerdo).   
> Luego
> con eso, haces un dump de la tabla y observas cual fue la transaccion
> que borro todo.  Para esto, haces un dump detallado y te fijas en el
> Xmax que tiene marcado un porcentaje importante de los registros de la
> tabla.
>
> Una vez que conozcas el Xmax, vuelve aca y seguimos conversando  
> (hay que
> modificar el pg_clog).  Tienes suficiente tarea por ahora :-)
>
Bien.
Realice el siguiente procedimiento, espero sea el correcto, teniendo  
como
base los siguientes datos:
a. La db en cuestión se llama lab_tarificador.
b. La tabla se llama user_maes.
c. El directorio de datos esta ubicado en /data/dbcluster

1. Obtuve el OID de la DB
db # SELECT oid FROM pg_database WHERE datname = 'lab_tarificador';
    oid
---------
2423715
(1 row)

2. Obtuve el OID de la tabla.
db # SELECT relfilenode FROM pg_class WHERE relname = 'user_maes';
relfilenode
-------------
160651896
(1 row)

3. Usando el pg_filedump con las opciones -i -f,
$ pg_filedump -i -f /data/dbcluster/base/2423715/160651896 >  
user_maes.dump

y busque el TAG de Xmax, encontre lo siguiente ...
*****************************************************************
* PostgreSQL File/Block Formatted Dump Utility - Version 1.1
*
* File: /data/dbcluster/base/2423715/160651896
* Options used: -i -f
*
* Dump created on: Thu Feb 23 16:05:55 2006
*****************************************************************

Block    0 ******************************************************
<Header> -----
Block Offset: 0x00000000         Offsets: Lower     228 (0x00e4)
Block: Size 8192  Version    2            Upper     300 (0x012c)
LSN:  logid   1338 recoff 0x25048d88      Special  8192 (0x2000)
Items:   52                   Free Space:   72
Length (including item array): 232

Error: Invalid header information.

   0000: 3a050000 888d0425 01000000 e4002c01  :......%......,.
   0010: 00200220 7c9f0801 e49e3001 589e1801  . . |.....0.X...
   0020: a89d6001 fc9c5801 689c2801 c89b4001  ..`...X.h.((dot)(dot)(dot)(at)(dot)
   0030: 449b0801 c49a0001 209a4801 98991001  D....... .H.....
   0040: 0c991801 88980401 d8975c01 28976001  ..........\.(.`.
   0050: 84964801 00960801 54955801 b8943401  ..H.....T.X...4.
   0060: 08945c01 84930801 e0924801 58921001  ..\.......H.X...
   0070: dc91f800 44913001 90906801 e48f5801  ....D.0...h...X.
   0080: 408f4801 c48ef800 448e0001 948d6001  @.H.....D.....`.
   0090: e48c6001 608c0801 d48b1801 2c8b5001  ..`.`.......,.P.
   00a0: a88a0801 108a3001 84891801 d4886001  ......0.......`.
   00b0: 28885801 94872801 f4864001 70860801  (.X...((dot)(dot)(dot)(at)(dot)p(dot)(dot)(dot)
   00c0: f0850001 4c854801 c4841001 38841801  ....L.H.....8...
   00d0: b4830401 04835c01 54826001 b0814801  ......\.T.`...H.
   00e0: 2c810801 00000000                    ,.......

<Data> ------
Item   1 -- Length:  132  Offset: 8060 (0x1f7c)  Flags: USED
   XID: min (330466371)  CMIN|XMAX: 0  CMAX|XVAC: 330474520
   Block Id: 0  linp Index: 0   Attributes: 0   Size: 13
   infomask: 0x0001 (HASNULL)
   Error: Computed header length not equal to header size.
          Computed <24>  Header: <13>

   1f7c: 4384b213 00000000 18a4b213 00000000  C...............
   1f8c: 00000000 01000d00 130124ff 0f000000  ..........$.....
   1f9c: 7a5a9309 92000000 0a000000 64617669  zZ..........davi
   1fac: 64720000 11000000 31247450 7856536b  dr......1$tPxVSk
   1fbc: 444c7473 51000000 09000000 44415649  DLtsQ.......DAVI
   1fcc: 44000000 0a000000 44415649 4c410000  D.......DAVILA..


Ahora, a que se refieren estos datos ?

Me falto algo en la tarea ? :-)

AQ


In response to

Responses

pgsql-es-ayuda by date

Next:From: Gunnar WolfDate: 2006-02-23 22:39:12
Subject: Re: Revisi?==?iso-8859-1?Q?ón de la integridad referencial de la base de datos
Previous:From: Alvaro HerreraDate: 2006-02-23 21:56:41
Subject: Re: obtener el valor de una secuencia sin hacer antes nextval()

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group