Re: migracion de versiones

From: Francisco Olarte <folarte(at)peoplecall(dot)com>
To: Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>
Cc: Jaime Casanova <jaime(dot)casanova(at)2ndquadrant(dot)com>, FORO POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: migracion de versiones
Date: 2017-03-23 08:26:27
Message-ID: CA+bJJbwzuzo-56WvtFyu8B6zVuRYg-YpR4VVkymWWDogXR-AhA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Maria Antonieta:

2017-03-23 0:35 GMT+01:00 Maria Antonieta Ramirez <maramirez(at)ulsaneza(dot)edu(dot)mx>:
> Me interesa la parte de como restaurar por partes, me pueden decir donde
> puedo leer mas acerca de esto, para aprender a hacerlo porfavor.

Primero, tu uso del top posting, especialmente con un mensaje
cualqueira como origen, hace casi imposible saber a que parte del hilo
te refieres.

En cuanto a localizacion de info, todo lo que te digo viene
documentado en las paginas del pg_dump/pg_restore, que estan dentro de
"postgresql client applications" en el manual.

Dicho esto, yo recuerdo haber dicho algo de restaurar por partes. Me
explico un poco mas.

Cuando haces un backup (con pg_dump) de una instancia de postgres al
restaurarla lo que haces es basicamente ejecutar un script SQL
gigante.

El pg_dump sin parametros, en formato texto, lo que hace es montarte
directamente ese script. Las unicas ventajas que (IMO) tiene ese
metodo es que se puede comprimir algo mas ( aunque yo jamas he
encontrado un caso en el que mereciese la pena por eso ) y que puede
contener en un solo archivo varias bases de datos y las definiciones
globales ( usuarios y roles ) del servidor.

Cuando yo tengo que hacer una migracion lo que hago es primero volcar
en formato texto las variables globales ( pg_dumpall -g, como te
indicaba Jaime ). Esto te da un script SQL pequeño que es facil de
arreglar si tienes que cambiar algo aprovechando la migracion o
arreglar algo por diferencias extremas de versiones.

Tras ello vuelco cada base de datos en formato custom, pg_dump -Fc.
Este formato es similar a un tar con elementos comprimidos en el
interior, o a un zip, pero especifico para postgres. Este formato te
hace lo mismo que el de texto, ya que un pg_restore sin mas de un dump
te da el mismo script sql que un pg_dump a script.

Pero el pg_restore puede hacer mas cosas. Una de ellas es conectar a
la BD que le digas y mandar el sql alli sin pasar por disco,
evidentemente. Otra es listarte lo que hay dentro del backup (
pg_restore -l ) que es lo que yo uso para restaurar por partes. Esa
opcion te da un listado comentado de lo que hay dentro del arhivo en
el orden en que lo va a procesar. Es como un script de control de
restauracion. La cosa es que ese listado lo puedes mandar con la
opcion -L de vuelta al pg_restore, lo que no es muy interesante. Pero
tambien puedes editarlo, trozearlo, reordenarlo o borrar cachos y
usarlos despues.

Yo he usado eso, p.e., para resolver un problema de roles. El backup
iba bien hasta que llegaba a una tabla que tenia un problema de
encodings, si no recuerdo mal. Lo que hacia era partir la lista del -l
en dos cachos, ejecutar el primero, pasar un pequeño trozo de sql que
hice para arreglar las cosas y despues pasar el segundo.

Tambien lo he usado para reordenar un par de tablas. Primero
restauraba ese par de tablas en un server auxiliar y las reorganizaba
y hacia un backup de esas dos. Luego editaba el listado para restaurar
hasta esas tablas del original, en medio restauraba las tablas
reorganizadas de la copia, y detras restauraba lo que venia detras de
las tablas originales.

Y otra cosa para lo que lo uso mucho es para las particiones. Nosotros
tenemos mucho dato en tablas particionadas por fechas ( de insercion
mas o menos ). Cuando restauro una de estas puedo editar el listado
para restaurar las tablas maestras de las particiones y la particion
actual, poner el sistema en servicio ( degradado por que no se puede
consultar el historico, pero es util ) y despues voy restaurando las
particiones de historico ( de hecho uno de los tipos de
reorganizaciones que he hecho como te contaba arriba es particionar
tablas que no lo estaban ).

Basicamente lo de ir por partes es parecido a editar el archivo sql
gigante, pero mas comodo cuando el volumen de datos es grande.

Francisco Olarte.

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda(at)postgresql(dot)org)
Para cambiar tu suscripcin:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Kernel 2017-03-23 10:54:19 problemas con el recolector de estadisticas
Previous Message Mario Sileone (GM) 2017-03-21 12:54:00 Re: Consulta sobre Split