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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gunnar Wolf 2006-02-23 22:39:12 Re: Revisión de la integridad referencial de la base de datos
Previous Message Alvaro Herrera 2006-02-23 21:56:41 Re: obtener el valor de una secuencia sin hacer antes nextval()