Buenos días:
Les comento que estamos trabajando con la versión 8.2 de Postgresql sobre Windows 2000 Server.
Para automatizar un poco el tema del backup diario de la base de datos hemos generado un archivo .bat que contiene algo así como lo siguiente, y que se ejecuta tipo 5 de la madrugada.
@echo off
set pgpassword=un_password
set FECHA=%date:~10,4%%date:~7,2%%date:~4,2% //se extrae la fecha del sistema
@echo off
pg_dump siu -U pampa -c > “c:\bkppampa%FECHA%.sql”
Se ejecuta bien todos los días, hasta el momento, la cuestión es que al querer restaurar un backup este tiene un tamaño mayor al que se puede ejecutar (por ahora 175 MB), entonces tenemos que dividir el archivo en dos partes (por ahora) para poder restaurar.
La pregunta es si ¿existe alguna otra forma de hacer esto que conozcan?
Para poder partir los dumps podes por ejemplo sacar en un archivo la estructura de la base, y en N archivos distintos los Copy´s con los datos de las tablas (siempre que no partas ninguno). Después para restaurar, haces una bat que levante los scripts en el orden apropiado y listo. Se entiende?
Esteban:
Muchas gracias Esteban por la respuesta…entendí lo que debemos hacer, pero estuve mirando en la documentación de Postgresql y no vi, por lo menos a primera vista algún comando como para exportar los datos en varios archivos, por ahí una forma que se me ocurre sería hacer dump por separado de las tablas que se saben que tienen muchos datos, en este caso dh21 y dh21h.
¿Sería esto así o existe algún comando para decir que exporte hasta un tamaño de archivo determinado?
Como siempre, hay varias formas de hacer esto: La primera es la mas “manual” digamos, que consiste en agarrar el archivo de texto del dump y editarlo a mano. Osea, con un editor de texto cualquiera, fijarse hasta donde estan los comandos que se usan para definición de la estructura de la base (DDL). Luego tendrían que venir los Copy´s que cargan los datos a las tablas. Tienen un formato parecido a:
Estos son los que yo te decía q podes poner hasta uno por archivo, siempre y cuando respetes el orden.
La otra forma es usando las tantas opciones de “pg_dump” (manual). Por ejemplo uno de los parámetros te permite sacar solo la estructura de la base sin los datos ( -a). Para sacar los datos de las tablas tenes “-t nombre_tabla”, que te permitiría tener un archivo por tabla. La desventaja es que tenes que hacer uno por uno, y eso según el tamaño de las bases, puede llegar a ser impracticable. Otra desventaja es que tampoco tenes una pista sobre el orden de carga de las tablas y podes llegar a tener problemas con las restricciones del modelo.
Probablemente haya mas formas todavía, después vemos que dice nico.
Hola Marcelo, el limite de 175 mb que nombras es del pgAdmin?
Probaste de recuperar la base a partir de la linea de comandos?
Algo del estilo: psql -U pampa -f “c:\bkppampa\20090526.sql” siu_prueba
Nicolás:
Mirando lo que escribí me doy cuenta que no me expresé bien…ese tamaño es el que tiene el archivo .sql que se genera.
Lo traté de incorporar mediante linea de comandos con:
psql siu < 20090526.sql -U pampa. Por el contenido de las tablas posterior a la ejecución del mismo es que inferimos que se ha cortado la ejecución, aclaro que es en un servidor de prueba.
Te comento que ejecuté el comando que recomendaste y se ejecutó completamente.