Changes between Version 28 and Version 29 of manual_regente_windows_postgres

Show
Ignore:
Timestamp:
10/27/11 16:23:20 (14 years ago)
Author:
pablo
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • manual_regente_windows_postgres

    v28 v29  
    100100C:\Archivos de programa\pgAdmin III\1.10\pg_restore.exe --host 192.168.1.95 --port 5432 --username sistemas --dbname regente --data-only --disable-triggers --verbose "C:\Documents and Settings\german\Mis documentos\Regente docs\DIRA\backup_dira.bkp.backup" 
    101101}}} 
    102  
     102 * Si el backup origen de datos tiene muchas instrucciones de replicación (de la tabla replicacion.rep_instrucciones) es posible que demore mucho la restauración de los datos y es posible también que dé errores, etc.[[BR]]Relacionado a lo anterior, para restaurar una base de datos, digamos para una sucursal nueva, no son necesarios los registros de replicacion.rep_instrucciones excepto por el último del idu_db de casa central.[[BR]]Se presentas a continuación los pasos para restaurar la base de datos tal como se explicó en los pasos anteriores pero teniendo en cuenta además que no se va a restaurar el contenido de replicacion.rep_instrucciones.[[BR]]Este procedimiento está agendado en el marco de la instalación de Postgres en Windows pero aplica también a la instalación de Postgres en Linux:[[BR]]'''Solución para restaurar un backup con muchas instrucciones en replicación:'''[[BR]](caso ejemplo con archivo de backup regente1.dmp y base de datos llamada demo2) 
     103  * 1) Restaurar solo el esquema 
     104  {{{ /usr/lib/postgresql/8.3/bin/pg_restore -h localhost -p 5432 -U sistemas -d demo2 -O -s -v regente1.dmp 2> errores.txt }}} 
     105  * 2) Borrar el schema replicación 
     106  {{{ DROP SCHEMA replicacion CASCADE; }}} 
     107  * 3) Quitar checks que pueden causar problemas con datos viejos: (esto no es específico del problema en cuestión acá que es evitar los datos de replicación en la restauración) 
     108   {{{ 
     109--(tb. habria que quitar los checks: chk_existencia_especificar_lote en remitos_detalles y chk_numero_en_chequera en tabla valores). 
     110ALTER TABLE remitos_detalles DROP CONSTRAINT chk_existencia_especificar_lote; 
     111ALTER TABLE remitos_detalles DROP CONSTRAINT chk_existencia_especificar_lote_unitario; 
     112ALTER TABLE valores DROP CONSTRAINT chk_numero_en_chequera; 
     113}}} 
     114  * 4) Restaurar solo los datos 
     115  {{{ /usr/lib/postgresql/8.3/bin/pg_restore -h localhost -p 5432 -U sistemas -d demo2 -a --disable-triggers -v regente1.dmp 2> errores.txt }}} 
     116  * 5) Volver a poner checks quitados: 
     117  {{{ 
     118--Volver a poner checks quitados, quiza ajustando algo en los datos: 
     119delete from remitos_detalles where id_lote IS NULL AND existencia_con_lote(id_articulo) 
     120ALTER TABLE remitos_detalles ADD CONSTRAINT chk_existencia_especificar_lote CHECK (NOT (id_lote IS NULL AND existencia_con_lote(id_articulo))); 
     121ALTER TABLE remitos_detalles ADD CONSTRAINT chk_existencia_especificar_lote_unitario CHECK (NOT (COALESCE(cant, 0::double precision) <> 1::double precision AND existencia_con_lote_unitario(id_articulo))); 
     122delete from valores where not valor_cheque_en_chequera(id_cuenta, nro, id_tipo_pago) 
     123ALTER TABLE valores ADD CONSTRAINT chk_numero_en_chequera CHECK (valor_cheque_en_chequera(id_cuenta, nro, id_tipo_pago)); 
     124  }}} 
     125  * 6) Hacer un backup de todo el schema replicacion de la base de datos de origen y restaurarla. 
     126  * 7) Obtener el ultimo idu_rep_instruccion del server central (se asume idu_db = 1) e insertarlo para que comience a replicar a partir de ahí: 
     127   * 7.1) Extraer las instrucciones de replicacion del archivo de backup: 
     128   {{{ pg_restore -a -t rep_instrucciones regente1.dmp > /home/sistemas/backup/rep_instrucciones.txt }}} 
     129   * 7.2) Quedarse sólo con las instrucciones del día en que se hizo el backup y ordenarlas: 
     130   {{{ 
     131cat /home/sistemas/backup/rep_instrucciones.txt | grep "2011-10-25 " > rep_instrucciones_20111025.txt 
     132sort rep_instrucciones_20111025.txt > rep_instrucciones_20111025_sorted.txt 
     133   }}} 
     134   * 7.3) tomar la ultima instruccion que comience en 1 e insertar esa idu_rep_instruccion en replicacion.rep_instrucciones del nuevo server: 
     135   {{{ 
     136mc -e rep_instrucciones_20111025_sorted.txt 
     137En este ejemplo: 
     1381: 4613012 
     139insert into replicacion.rep_instrucciones values (1,4613012,'restaurado hasta aca','2011-10-27',null,'sql'); 
     140   }}} 
    103141 
    104142