Re: No se puede acceder a la BD

From: Horacio Miranda <hmiranda(at)gmail(dot)com>
To: Jairo Graterón <jgrateron(at)gmail(dot)com>
Cc: Lucas Luengas <lucasluengas(at)gmail(dot)com>, Lista PostgreSQL <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: No se puede acceder a la BD
Date: 2019-03-27 02:03:49
Message-ID: 00A75F9E-1FF8-43B6-A582-ACB1F981A413@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ahora que el incendio esta apagado, tu pega es hacer un script que se ejecute cada día y que saque un respaldo. mucho mejor si puedes configurar un hot-standby.

> On 27/03/2019, at 1:15 PM, Jairo Graterón <jgrateron(at)gmail(dot)com> wrote:
>
> ¡Gracias! Horacio
>
> Este thread es bueno, dedos cruzados que solo es un indices.
> https://grokbase.com/t/postgresql/pgsql-general/12a3rb6p15/postgres-will-not-start-due-to-corrupt-index <https://grokbase.com/t/postgresql/pgsql-general/12a3rb6p15/postgres-will-not-start-due-to-corrupt-index>
>
> Puedes subir la base de datos con la opción -P ( hagas lo que hagas no toques el respaldo que tienes ).
>
> Logré acceder a la BD con las instrucciones, hice reindex y puedo ver toda la información.
>
> Compartiré los pasos
>
> 1. Paré el servicio de postgres
> 2. desde la consola inicié el programa postgres.exe
> postgres --single -D "C:\Program Files\PostgreSQL\9.2\data" -P mydb
> 4. reindex database mydb;
> 5. cerré la consola
> 6. inicié el servicio y listo ya se puede acceder desde pgadmin.
>>
>> select * from pg_class where relfilenode = 11760;
>
> Ésta relación ya no existe, seguramente era un índice.
>
> Saludos.
>
>
>
>
>
> El lun., 25 mar. 2019 a las 18:41, Horacio Miranda (<hmiranda(at)gmail(dot)com <mailto:hmiranda(at)gmail(dot)com>>) escribió:
>
>
>> On 26/03/2019, at 11:10 AM, Jairo Graterón <jgrateron(at)gmail(dot)com <mailto:jgrateron(at)gmail(dot)com>> wrote:
>>
>> Saludos
>>
>> select * from pg_class where relfilenode = 11760;
>> No funciona porque no se puede acceder a la BD
>
> Este thread es bueno, dedos cruzados que solo es un indices.
> https://grokbase.com/t/postgresql/pgsql-general/12a3rb6p15/postgres-will-not-start-due-to-corrupt-index <https://grokbase.com/t/postgresql/pgsql-general/12a3rb6p15/postgres-will-not-start-due-to-corrupt-index>
>
> Puedes subir la base de datos con la opción -P ( hagas lo que hagas no toques el respaldo que tienes ).
>
>> Hice el checkdisk y hay fallas en el disco duro, es más la máquina ya no arranca.
>>
>> Logré respaldar la carpeta DATA de postgres y lo copie en otra máquina con su misma versión de postgres pero igualmente no se puede acceder a la BD.
>>
>> usé el programa reindex y da el mismo error, cree un archivo con el mismo nombre sin bytes y aparece "Fatal: índice pg_attribute_relid_attnum_index contiene páginas vacías no esperadas en el bloque 0"
>>
>>
>> Así que restauraremos la copia que tengo del año pasado y ellos revisaran los reportes diarios para recuperar las ventas y cobranzas.
>>
>>
>> Ojo no soy el administrador de sistemas de la empresa, sólo instalé el sistema hace varios años, en su momento les indiqué que hicieran respaldos diarios, comprar discos redundantes y un UPS para ese equipo.
>>
>> Gracias por sus respuestas.
>>
>>
>>
>>
>>
>> El sáb., 23 mar. 2019 a las 18:24, Horacio Miranda (<hmiranda(at)gmail(dot)com <mailto:hmiranda(at)gmail(dot)com>>) escribió:
>> Algunas cosas que hago cuando hay problemas Comentarios entre lineas.
>>
>> On 24/03/2019 5:29 AM, Jairo Graterón wrote:
>>> Hola Lucas
>>>
>>> Si el servidor Postgres arranca correctamente, no se puede hacer backup ya que da error al acceder a la BD de la empresa
>> Hay varios tipos de respaldos, si no puedes hacer un respaldo lógico, hace un respaldo físico ( copia todo a otra maquina no otro directorio o disco en ese servidor ). ( usa discos remotos montados de forma local ), que tamaño estamos hablando ? Tienes otra maquina similar supongo ?
>>>
>>> Al igual que pg_admin desde la línea de comandos puedo iniciar sesión desde la BD por default de postgres, pero luego cuando cambio a BD de producción aparece el error.
>>>
>> Antes de ver la base de datos asegurate que la maquina este bien ( que maquina es ? sí es una HP/DELL/Cisco, etc ) revisa que el cache de la controladora este online y los discos no esten esperando una acción, sí tienes mala suerte el archivo estaba en el cache a la hora de la falla, sí esto llegara a ser correcto, es un proceso temporal que crea y borra tablas y puede que tengas suerte ).
>>
>> Sí es S.O. Lo que puedes tratar ( sí no has escrito nada en la maquina ) recuperar ese archivo con testdisk ( pero debes saber lo que estas haciendo y despues de sacar un respaldo ) la regla es no usar el disco con problemas para asegurarte que no se escriban los bloques ( lo ideal es tener el postgresql en otra particion ). https://www.cgsecurity.org/wiki/TestDisk_Download <https://www.cgsecurity.org/wiki/TestDisk_Download>Paré el servicio postgres e hice un respaldo del directorio BASE,
>>>
>>> Voy a revisar el visor de logs de postgres a ver si encuentro el porque se borró ese archivo.
>>>
>> No creo que pilles el por que... revisa el disco con checkdisk, y carga el respaldo en otra maquina ( se que tienes un respaldo, pero esta probado ? ).
>>
>>
>>
>> PS: Moraleja, los respaldos se deben sacar de forma automática, no confíes en humanos para hacer tareas de maquinas y debes tener un DR plan ( respaldos fuera de la maquina y/o respaldados en dos lugares. En lo personal saco respaldo semanales, mensuales y anuales con retención 4 en cada ítem para bases importantes en un Storage remoto en otro datacenter. ( paranoico pero eso me salvo la vida una vez una carga de datos errónea que necesite un respaldo de 2 años atrás ).
>>
>>> El sáb., 23 mar. 2019 a las 11:49, Lucas Luengas (<lucasluengas(at)gmail(dot)com <mailto:lucasluengas(at)gmail(dot)com>>) escribió:
>>> Hola.
>>>
>>> Lo primero que yo haría sería comprobar si la base de datos arranca y para correctamente. Aunque quizás no se acceda a todos sus objetos.
>>> Si la base de datos arranca y para correctamente, lo primero que yo haría sería hacer un backup del estado actual antes de proceder con ninguna acción (suponiendo que se pueda hacer backup, espero que sí).
>>>
>>> Lo segundo que haría sería revisar los logs postgres y el visor de sucesos de Windows porque algunos mensajes iniciales de Postgres en entorno Windows se muestran en el visor de sucesos y quizás puedan ser de interés. A partir de los logs puedes investigar más a fondo.
>>>
>>> Lo tercero: por la captura de pantalla, el error lo ofrece Pgadmin. ¿Lo ofrece al acceder a alguna tabla en concreto, a todas las tablas, al conectar a la base de datos?
>>>
>>> Lo cuarto: comprueba si se puede entrar a la base de datos por línea de comandos vía psql, y en caso afirmativo si puedes hacer select de las tablas de la base de datos.
>>>
>>> Lo que he comentado no soluciona el problema, pero ayuda a averiguar el/los problemas concretos de fondo.
>>>
>>> Saludos.
>>>
>>>
>>>
>>>
>>>
>>> On Sat, Mar 23, 2019 at 3:23 PM Jairo Graterón <jgrateron(at)gmail(dot)com <mailto:jgrateron(at)gmail(dot)com>> wrote:
>>> Buen día lista,
>>>
>>> Tengo el siguiente problema
>>>
>>> <image.png>
>>>
>>> Ocurrió al apagarse repentinamente el servidor porque falló el sistema eléctrico y su sistema de respaldo.
>>>
>>> El administrador de sistema no hizo los respaldos respectivos y no hay backup de éste año.
>>>
>>> Es una empresa pequeña y tiene un servidor con postgres 9.2. corriendo sobre Windows 7.
>>>
>>> Ese sistema lo instalé hace como 10 años y la BD nunca había dado problemas.
>>>
>>> Alguna sugerencia de cómo recuperar la BD?
>>>
>>> PD.
>>>
>>> Tengo un respaldo del año pasado, no se si sirva para algo.
>>>
>>> Gracias
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Hellmuth Vargas 2019-03-28 15:12:57 merge de datos cluster de base de datos postgres
Previous Message Jairo Graterón 2019-03-27 00:15:45 Re: No se puede acceder a la BD