Restauración en paralelo de copias de seguridad.

idea

Una de las características nuevas de PostgreSQL 8.4 es la posibilidad de restaurar copias de seguridad paralelizando la tarea a múltiples núcleos, y así disminuyendo de manera considerable, el tiempo del proceso.

Esto es una gran ventaja frente la recuperación de datos en un solo proceso...
Imaginemos que tenemos un "dump" de la base de datos de unos 300GB, esto en un solo procesador tardaría unas 12 horas en restaurarse (relativamente al hardware...) Paralelizando la restauración a medida que se pueda, el tiempo puede lograr una mejora de tiempo en unos 50% en solo aplicar a dos núcleos.

También cabe destacar que como en todos los procesos, si uno depende del otro
no existirá realmente una paralelizacion real, entonces podemos deducir que en las bases de datos es un metodo semejante. Y si tenemos una base de datos donde cada tabla depende de la otra, no se conseguiría paralelizar el proceso de importación de manera que desearíamos que funcionara.

Para este caso migraremos de 8.2 a 8.3 con pg_restore de 8.4.
Desde luego también puede seguir pasos similares para 8.3 a 8.4 en un futuro.

También si es posible, para hacer el dump de la base de datos siempre es mejor
usar "pg_dump" de la versión a la que se quiere migrar que en este caso es 8.3.

Generamos un dump de la base de datos entera:

  /usr/local/pgsql/bin/pg_dump -F c -v -f my_db.dump my_database 

Guardamos los roles en caso de que sea necesario:

  /usr/local/pgsql/bin/pg_dumpall -g -f my_roles.dump

Luego pasamos a la fase de importación, insertamos los roles si hace falta:

  /usr/local/pgsql/bin/psql -f my_roles.dump postgres 

Usamos el pg_restore de 8.4 para importar la base de datos:

  /usr/local/pg84/bin/pg_restore -F c -j 8 -v -C -f my_db.dump

Se usa -j 8 para generar 8 procesos paralelizados, para aprovechar 8 cores
en una maquina que obviamente debería tener 8 cores.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

backup para una restauracion

Hola, quizá sea un poco OFF-TOPIC, pero con respecto a la restauración, me interesa el backup y el tamaño y/o espacio que puede ocupar un backup de las bases de datos.
Hay alguna forma +/- de averiguar esto, auqnue no sea 100% exacta, con aproximación es suficiente, h ebuscado info sobre el tema, pero no encuentro nada concreto.

Gracias

Un saludo

jjlcubas@gmail.com

Imagen de rafaelma

Re: backup para una restauracion

me interesa el backup y el tamaño y/o espacio que puede ocupar un backup de las bases de datos.

El tamaño de tu backup dependerá muchisimo del tipo de datos que tengas y del número de índices que tu base de datos utiliza.

Un típico backup con pg_dump, genera los comandos SQL necesarios para restaurar la schema y los datos de una base de datos. Los índices no se copian, solamente los comandos necesarios para generarlos, por lo que todo el espacio utilizado por un índice en producción no se necesita en el backup.

Dependiendo también del tipo de datos se podrá comprimir más ó menos el backup resultante. Que yo sepa no exite una formula general que te de una estimación del espacio que un backup te va a ocupar. Lo que es seguro es que ocupará menos que lo que ocupa la base de datos en uso.

Como dato orientativo, en una base de datos típica de las que administro, con 22 tablas, 77 índices y con un tamaño de 33GB en uso, los backups generados con pg_dump ocupan 23GB sin comprimir y 8.6GB comprimido con gzip.

--
Rafael Martinez
Webmaster

Re: backup para una restauración

Aclarado.

Ahora bien,no has tenido nunca problemas a la hora de restaurar este tipo de ficheros(comprimidos) tan grandes (ms de 2gb) ?, la restauración ha sido correcta?

Por otro lado, tanto bakcup, como restauración de BD grandes(varios GB), es mejor hacerlo por consola, sea de forma presencial o desantendida, o con algún soft free o comercial(tanto bajo win como bajo linux), lo digo por si surge algún tipo de problemas, posible corrupción de datos, etc.

Soy nuevo, en esto(postgres y en grandes BD de este tipo), por lo que necesito ayuda sobre el tema, para poder hacer correctamente mi trabajo y no "meter la pata" en mis primeros días :)

Muchas gracias
Un saludo

jjlcubas

como hacer backup en la ultima version 9,1 con php??

Hola, alguien sabe como automatizar desde php una copia de seguridad ????
gracias....

Respuesta hacer backup

Esto puede servirte para tus backup.. lo encontre en internet, espero que te sirva..

http://www.4seo.es/blog/recursos/backup-de-tus-bases-de-datos-por-correo...

Restauración en paralelo

Hola, resucitando este tema, estoy justamente con un proyecto de actualizar bases de datos 8.2.13. El primer paso lo hago hacia la 8.3 y este artículo es anillo al dedo.

Bueno, mi pregunta es: al hacer el pg_restore con lo parámetros indicados, no hizo nada, se quedaba congelado. Tuve que hacerlo de la siguiente forma para que funcionara:

createdb my_DataBase

pg_restore -F c -v -C -d my_DataBase my_DBdump.dump

Como lo hice por medio stdin, no permitió usar -j X

Gracias.