Re: Re: Backups Acotados

From: "Manuel A(dot) Estevez Fernandez" <stvzito(at)gmail(dot)com>
To: Vladimir Damian <vladimirsoftware(at)gmail(dot)com>
Cc: "Joel A(dot) Iturra" <iturrajoel(dot)lists(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Re: Backups Acotados
Date: 2011-01-15 15:59:00
Message-ID: 4D31C444.1060502@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El -10/01/37 13:59, Joel A. Iturra escribió:
> Hola,
>
> Te cuento mi idea para resolver un problema similar acá.
>
> Tengo tres diferentes tipos de tablas, unas son de configuración del
> sistema, por
> ejemplo "ciudades", otras tablas de configuración de producción, por
> ejemplo "clientes"
> y otras tablas de datos, por ejemplo "facturas" (en mi caso son otras
> cosas, pero te
> hago ese ejemplo).
>
> Las primeras tablas, tienen que estar si o si en la db de desarrollo.
> Las segundas tablas, por asunto de integridad, también están completas
> en la DB de desarrollo, pero
> son solo miles de registros, no millones.
> Y las últimas tablas, que son más de 100 millones de registros, las
> tengo particionadas
> por meses. Luego solo copio el último mes a la db de desarrollo, lo
> que me significa tener muy pocos
> datos (en comparación a la DB de producción).
>
> Luego haces el DUMP filtrando todas las tablas de datos y agregando
> las que te interesan (
> del último mes en mi caso).
>
> Otra opción es simplemente tener un set de datos (bien variado) para
> desarrollo, ese set de datos
> lo debes ir complementando con cada caso "extraño" con el que te vas
> encontrando, pero en mi
> experiencia, nada más extraño que la realidad (producción).
>
>
> Suerte
>
> Joel.
>
>
> El día 4 de enero de 2011 13:06, Vladimir Damian
> <vladimirsoftware(at)gmail(dot)com> escribió:
>> Estimados
>> Felices fiestas antes que nada.
>> Tengo una base de datos extremadamente grande y se desea armar una base de
>> datos para desarrollo y esta debe tener un numero limitado de registros
>> no se dispone de un backup o politica parecida. y ante la necesidad
>> expuesta, deseo me orienten en el tema.
>> me explico:
>> 1. O hacer que todas las tablas solo resguarden ejemplo 1,000 por tabla o
>> 2. Poder determinar la cantidad de registros por cada tabla.
>> --
>> Saludos,
>> Vladimir Damian
>> Lima Peru
>>
Hace un tiempo hicimos algo muy parecido.
Tenemos una base de datos donde se concentra toda la información de las
demas sucursales ( una tiendas de conveniencia ) y cuando hay que crear
una tienda nueva debemos seleccionar solo la información correspondiente
para sólo esa tienda.
La solución, creamos un script ( bash ) que lo que hace es extraer la
estructura de la base de datos.
$NCOM es el nivel de compresión de la db

#Se obtiene el esquema
echo Se obtiene el esquema...
pg_dump -U yepas -h $HOST -C -Fc -s -Z $NCOM ashura >
/tmp/estructura_ashura.backup
echo Se obtiene esquema para migracion...
# cargando el esquema
echo Creando Esquema en la maquina Objetivo...
pg_restore -C -s -h $HOSTDESTINO -U yepas -d postgres
/tmp/estructura_ashura.backup
echo Creando Esquema de migracion en la maquina objetivo...

Luego creamos tablas temporales, que llenamos con la informacion
necesaria, aqui es donde delimitarias los datos o filtrarlos segun tus
necesidades.

echo Obteniendo datos de la tabla Compras Tienda...
psql -U yepas -h $HOST -d ashura -c "BEGIN;create temp table
compras_tienda_$SUCURSAL as select
compras_tienda.id_compra,compras_tienda.id_proveedor,compras_tienda.id_sucursal,compras_tienda.fecha_generada,compras_tienda.fecha_Factura,compras_tienda.fecha_recepcion,compras_tienda.id_empleado_recibe,compras_tienda.fecha_cancelacion,compras_tienda.id_empleado_cancela,compras_tienda.folio_factura,compras_tienda.folio_remision,compras_tienda.total_factura_sin_impuesto,compras_tienda.total_impuesto_factura,compras_tienda.total_factura_con_impuestos,compras_tienda.observaciones,compras_tienda.aplicado,compras_tienda.id_contrarecibo,compras_tienda.numero_cheque,compras_tienda.id_estatus,compras_tienda.id_orden_compra_tienda,compras_tienda.sincronizado
from compras_tienda join ordenes_compra_tienda
on(compras_tienda.id_sucursal=ordenes_compra_tienda.id_sucursal and
compras_tienda.id_orden_compra_tienda=ordenes_compra_tienda.id_orden_compra_tienda)
where ordenes_compra_tienda.id_sucursal=$SUCURSAL and
ordenes_compra_tienda.fecha_genera between '$(date -d "1 year ago"
+%Y/%m/%d)' and '$(date +%Y/%m/%d)';copy compras_tienda_$SUCURSAL to
'/tmp/compras_tienda.backup';ROLLBACK;"
echo Termino extraccion de la tabla Compras Tienda

Al final poblamos la tabla con los datos respaldados

echo Poblando Tabla Compras Tienda...
psql -U yepas -h $HOSTDESTINO -d ashura -c "copy compras_tienda from
'/tmp/compras_tienda.backup';"
echo Poblado Terminado

Saludos

ISC Manuel Alejandro Estévez Fernández

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernando Hevia 2011-01-16 20:20:47 Re: Re: [pgsql-es-ayuda] Para participantes extranjeros en el Tercer PGDay Latinoamericano.
Previous Message Gunnar Wolf 2011-01-15 00:07:36 Re: Oferta de un nuevo Entrenamiento en el marco del Tercer PGDay Latinoamericano.