Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   backup firebird (https://www.clubdelphi.com/foros/showthread.php?t=52839)

laukri 01-02-2008 12:11:36

backup firebird
 
Hola a todos! tengo que hacer un .bat que me genere el backup de mi base de datos en FireBird 2.0 de forma automatica... para ello utilizo GBAK... Pero lo que no puedo hacer todavia y no se como es parar la base de datos y despues de q se genera el backup volver a levantarla....
Si alguien me puede ayudar se lo voy a agradecer mucho
saludos!

Casimiro Notevi 01-02-2008 14:07:28

Cita:

Empezado por laukri (Mensaje 262612)
Hola a todos! tengo que hacer un .bat que me genere el backup de mi base de datos en FireBird 2.0 de forma automatica... para ello utilizo GBAK... Pero lo que no puedo hacer todavia y no se como es parar la base de datos y despues de q se genera el backup volver a levantarla....
Si alguien me puede ayudar se lo voy a agradecer mucho
saludos!

El gbak no necesita detener el servidor, puedes trabajar tranquilamente mientras se hace el backup

jhonny 01-02-2008 14:20:56

Cita:

Empezado por Casimiro Notevi (Mensaje 262624)
El gbak no necesita detener el servidor, puedes trabajar tranquilamente mientras se hace el backup

¿Ahhh si?, No lo sabia :eek:, pero me imagino que solo se pueden hacer consultas, porque en caso de modificar, insertar o borrar un dato, tendriamos una inconsistencia de los mismos a la hora de hacer el restore ¿o me equivoco?.

duilioisola 01-02-2008 14:47:57

Te equivocas:D

El backup se hace en una transacción, por lo que todo lo que ve el backup es lo que ha sigo grabado definitivamente (commit).

duilioisola 01-02-2008 14:54:16

Te envío un bat que utilizo en los clientes.

La mayor parte es mia, (yo la he tecleado).
La parte de optimización no me acuerdo de quien la saqué. La modifiqué un poco para que calzara en este bat.

A ser utilizada bajo cuenta y riesgo propio. No asumo ninguna responsabilidad por perdidas ocasionadas por la utilizacion del bat.


Normalmente lo ubico en C:\Backup
Lo llamo backup.bat
A este "backup.bat" lo llamo desde "Tareas programasas" en el panel de control a medianoche con "C:\Datos\backup.bat Lunes"
Si la base está en un linux, IPOri será lo IP del linux (p.ej. 192.168.1.1) y origen será "/base/"

Código:

@echo off
cls

rem ----------------------------------------------------------------------
rem Parametro 1 : Es el sufijo para nombrar el backup (Lunes/Martes/...)
rem nombre : nombre del backup
rem nombreBD : nombre de la base de datos.
rem            Sin path ni extension.
rem IPori : direccion IP donde se encuentra la base de datos
rem IPdes : direccion IP donde se hará el restore
rem origen : path donde se encuentra la base de datos
rem destino : path donde se generara copia, backup y restore
rem copia : SI/NO - si se copia la base de datos (solo win a win)
rem backup : SI/NO - si se hace un backup (gbak)
rem restore : SI/NO - si se hace un restore para verificar que el gbak funciono
rem sweep : SI/NO - si se hace un sweep, para cerrar transacciones terminadas
rem comprimir : SI/NO - utiliza Winrar para hacer la compresion del backup, restore y copia
rem ftp : SI/NO - envia los reportes del backup y restore
rem ftpBase : SI/NO - envia el backup de la base de datos
rem optimizacion : SI/NO - hace backup/restore de la base si no esta usandose
rem                SOLO PARA WINDOWS !!!
rem deframgentar : SI/NO - ejecuta una desfragmentacion del disco C al finalizar
rem ----------------------------------------------------------------------


set nombre=Cliente023
set nombreBD=base023
set IPori=127.0.0.1
set IPdes=127.0.0.1
set origen=C:\Datos\
set destino=C:\Backup\
set copia=SI
set backup=SI
set restore=SI
set comprimir=SI
set ftp=SI
set ftpBase=SI
set optimizacion=SI
set defragmentar=SI
set sweep=SI

rem Saca el dia de la semana
echo.| date | find "actual" > tmp$$$.bat
echo set weekday_=%%4> la.bat
call tmp$$$
cd %destino%

set weekday_=%1

echo *******************************************************************************
echo ***                                                                        ***
echo ***                  ESTA PANTALLA SE PUEDE MINIMIZAR                      ***
echo ***                                                            (VER 080111) ***
echo *******************************************************************************
echo Copia de Seguridad %nombre% - %weekday_%
echo %date% %time%
echo *******************************************************************************
echo ******************************************************************************** >> copia_%nombre%_%weekday_%.log
echo Copia de Seguridad %nombre% - %weekday_% >> copia_%nombre%_%weekday_%.log
echo %date% %time%  >> copia_%nombre%_%weekday_%.log
echo ******************************************************************************** >> copia_%nombre%_%weekday_%.log

if "%copia%"=="NO" goto FinCopia
  echo %date% %time% - Copia
  echo %date% %time% >> copia_%nombre%_%weekday_%.log
  echo Copia %origen%%nombreBD%.fdb "-->" %destino%%nombreBD%_%weekday_%.bak  >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  copy %origen%%nombreBD%.fdb %destino%%nombreBD%_%weekday_%.bak /y >> copia_%nombre%_%weekday_%.log

  if "%comprimir%"=="NO" goto FinComprimirBAK
      echo %date% %time% - Compresion de Copia
      echo %date% %time% >> copia_%nombre%_%weekday_%.log
      echo Compresion de %destino%%nombreBD%_%weekday_%.bak >> copia_%nombre%_%weekday_%.log
      echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
      if exist %destino%%nombreBD%_%weekday_%.bak "C:\Archivos de programa\WinRAR\WinRAR.exe" a %destino%%nombreBD%_%weekday_%.bak.rar %destino%%nombreBD%_%weekday_%.bak
  :FinComprimirBAK

:FinCopia

if "%backup%"=="NO" goto FinBackup
  echo %date% %time% - Backup
  echo %date% %time% >> copia_%nombre%_%weekday_%.log
  echo Backup - %IPori%:%origen%%nombreBD%.fdb "-->" %destino%%nombreBD%_%weekday_%.GBK >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  if exist backup_%nombre%_%weekday_%.log del backup_%nombre%_%weekday_%.log
  "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gbak.exe" -t %IPori%:%origen%%nombreBD%.fdb %destino%%nombreBD%_%weekday_%.GBK -user SYSDBA -pass masterkey -y backup_%nombre%_%weekday_%.log
  type %destino%Backup_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log

  if "%comprimir%"=="NO" goto FinComprimirGBK
      echo %date% %time% - Compresion de Backup
      echo %date% %time% >> copia_%nombre%_%weekday_%.log
      echo Compresion de %destino%%nombreBD%_%weekday_%.GBK >> copia_%nombre%_%weekday_%.log
      echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
      if exist %destino%%nombreBD%_%weekday_%.gbk "C:\Archivos de programa\WinRAR\WinRAR.exe" a %destino%%nombreBD%_%weekday_%.gbk.rar %destino%%nombreBD%_%weekday_%.gbk
  :FinComprimirGBK

:FinBackup

if "%restore%"=="NO" goto FinRestore
  echo %date% %time% - Restore
  echo %date% %time% >> copia_%nombre%_%weekday_%.log
  echo Restore %destino%%nombreBD%_%weekday_%.GBK "-->" %IPdes%:%destino%%nombreBD%_%weekday_%.res >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  if exist restore_%nombre%_%weekday_%.log del restore_%nombre%_%weekday_%.log
  "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gbak.exe" -r %destino%%nombreBD%_%weekday_%.GBK %IPdes%:%destino%%nombreBD%_%weekday_%.res -user SYSDBA -pass masterkey -y restore_%nombre%_%weekday_%.log
  type %destino%\Restore_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log

  if "%comprimir%"=="NO" goto FinComprimirGDB
      if IPdes=="127.0.0.1" goto FinComprimirGDB
      echo %date% %time% - Compresion de Restore
      echo %date% %time% >> copia_%nombre%_%weekday_%.log
      echo Compresion de %destino%%nombreBD%_%weekday_%.res >> copia_%nombre%_%weekday_%.log
      echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
      if exist %destino%%nombreBD%_%weekday_%.res "C:\Archivos de programa\WinRAR\WinRAR.exe" a %destino%%nombreBD%_%weekday_%.res.rar %destino%%nombreBD%_%weekday_%.res
  :FinComprimirGDB

:FinRestore

if "%comprimir%"=="NO" goto FinComprimir
  echo %date% %time% >> copia_%nombre%_%weekday_%.log
  echo Borrado de originales >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  if exist %destino%%nombreBD%_%weekday_%.bak del %destino%%nombreBD%_%weekday_%.bak >> copia_%nombre%_%weekday_%.log
  if exist %destino%%nombreBD%_%weekday_%.GBK del %destino%%nombreBD%_%weekday_%.GBK >> copia_%nombre%_%weekday_%.log
  if exist %destino%%nombreBD%_%weekday_%.res del %destino%%nombreBD%_%weekday_%.res >> copia_%nombre%_%weekday_%.log
:FinComprimir

if "%sweep%"=="NO" goto FinSweep
  echo %date% %time% - Sweep
  echo %date% %time% >> copia_%nombre%_%weekday_%.log
  echo %date% %time% - Sweep %IPori%:%origen%%nombreBD%.fdb >> copia_%nombre%_%weekday_%.log
  echo GFix %IPori%:%origen%%nombreBD%.fdb >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gfix" -sweep %IPori%:%origen%%nombreBD%.fdb -user SYSDBA -pass masterkey
:FinSweep

if "%ftp%"=="NO" goto FinFTP
  echo %date% %time% - Envio de Reportes
  echo %date% %time% >> copia_%nombre%_%weekday_%.log
  echo FTP a repositorio >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  if exist ftp_%nombre%_%weekday_%.txt del ftp_%nombre%_%weekday_%.txt
  echo open 192.168.1.250> ftp_%nombre%_%weekday_%.txt
  echo user tec>> ftp_%nombre%_%weekday_%.txt
  echo paralelogramo>> ftp_%nombre%_%weekday_%.txt
  echo cd logs>> ftp_%nombre%_%weekday_%.txt
  echo asc>> ftp_%nombre%_%weekday_%.txt
  echo send %destino%Backup_%nombre%_%weekday_%.log  backup_%nombre%.log>> ftp_%nombre%_%weekday_%.txt
  echo send %destino%Restore_%nombre%_%weekday_%.log restore_%nombre%.log>> ftp_%nombre%_%weekday_%.txt
  if "%ftpBase%"=="NO" goto FinFTPBase
      echo cd ..>> ftp_%nombre%_%weekday_%.txt
      echo cd cliente023>> ftp_%nombre%_%weekday_%.txt
      echo bin>> ftp_%nombre%_%weekday_%.txt
      echo send %destino%%nombreBD%_%weekday_%.gbk.rar>> ftp_%nombre%_%weekday_%.txt
  :FinFTPBase
  echo bye>> ftp_%nombre%_%weekday_%.txt

  FTP -n -s:ftp_%nombre%_%weekday_%.txt >> ftp_%nombre%_%weekday_%.log
  type ftp_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log

:FinFTP

if "%optimizacion%"=="NO" goto FinOptimizacion
  Echo %date% %time% - Optimizacion
  Echo Optimizacion >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  Echo      Desconectando BD ...
  Echo Desconectando BD ... >> copia_%nombre%_%weekday_%.log
  "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gfix.exe" -shut -attach 30 %IPori%:%origen%%nombreBD%.fdb -user SYSDBA -pass masterkey 2> errout.tmp

  echo 1> nul 2> vacio.tmp
  echo N 1> N_CR.tmp
  comp errout.tmp vacio.tmp 1> nul 2> nul < N_CR.tmp
  if errorlevel 1 GOTO ERRBDConectada

  Echo      Copia de la base antes de optimizar
  Echo Copia de la base antes de optimizar >> copia_%nombre%_%weekday_%.log
  copy %origen%%nombreBD%.fdb %destino%%nombreBD%.OPTIMIZACION /y > errout.tmp
  if errorlevel 1 GOTO ERRNoCopia

  echo      Parando Servidor Firebird ...
  echo Parando Servidor Firebird ... >> copia_%nombre%_%weekday_%.log
  NET STOP "Firebird Server - Defaultinstance" 1> nul 2>> copia_%nombre%_%weekday_%.log
  IF errorlevel 1 GOTO ERRNoParaFirebird

  echo      Arrancando Guardian ...
  echo Arrancando Guardian ... >> copia_%nombre%_%weekday_%.log
  NET START "Firebird Guardian - DefaultInstance" 1> nul 2>> copia_%nombre%_%weekday_%.log
  IF errorlevel 1 GOTO ERRNoIniciaGuardian

  echo      Haciendo Backup ...
  echo Haciendo Backup ... >> copia_%nombre%_%weekday_%.log
  if exist backup_%nombre%_Optimizacion.log del backup_%nombre%_Optimizacion.log
  "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gbak.exe" -t %IPori%:%origen%%nombreBD%.fdb %destino%%nombreBD%_Optimizacion.GBK -user SYSDBA -pass masterkey -y backup_%nombre%_Optimizacion.log

  echo 1> nul 2> vacio.tmp
  echo N 1> N_CR.tmp
  comp backup_%nombre%_Optimizacion.log vacio.tmp 1> nul 2> nul < N_CR.tmp
  if errorlevel 1 GOTO ERRBackup

  echo      Haciendo Restore ...
  echo Haciendo Restore ... >> copia_%nombre%_%weekday_%.log
  if exist restore_%nombre%_optimizacion.log del restore_%nombre%_optimizacion.log
  "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gbak.exe" -r %destino%%nombreBD%_optimizacion.GBK %IPori%:%origen%%nombreBD%.fdb -user SYSDBA -pass masterkey -y restore_%nombre%_optimizacion.log

  echo 1> nul 2> vacio.tmp
  echo N 1> N_CR.tmp
  comp restore_%nombre%_optimizacion.log vacio.tmp 1> nul 2> nul < N_CR.tmp
  if errorlevel 1 GOTO ERRRestore

:ACTIVAR_BASE
  echo      Activando BD...
  echo Activando BD... >> copia_%nombre%_%weekday_%.log
  "C:\Archivos de programa\Firebird\Firebird_1_5\bin\gfix.exe" -online %IPori%:%origen%%nombreBD%.fdb -user SYSDBA -pass masterkey 2> errout.tmp

  echo 1> nul 2> vacio.tmp
  echo N 1> N_CR.tmp
  comp errout.tmp vacio.tmp 1> nul 2> nul < N_CR.tmp
  if errorlevel 1 GOTO ERRNoActivaBD

  goto FinOptimizacion

:ERRBDConectada
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : Base de Datos Conetada >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRNoCopia
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo hacer una copia de la base de datos >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRNoParaFirebird
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo detener el servicio Firebird >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRNoIniciaGuardian
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo iniciar el servicio Firebird Guardian >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRBackup
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo hacer el backup >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:ERRRestore
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo hacer el restore >> copia_%nombre%_%weekday_%.log
Echo Restaura la base de antes de optimizar >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
copy %destino%%nombreBD%.OPTIMIZACION %origen%%nombreBD%.fdb /y > errout.tmp
goto ACTIVAR_BASE

:ERRNoActivaBD
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo ERROR : No se pudo Activar la Base de Datos >> copia_%nombre%_%weekday_%.log
echo ************************************************************ >> copia_%nombre%_%weekday_%.log
echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> copia_%nombre%_%weekday_%.log
goto FinOptimizacion

:FinOptimizacion

if "%defragmentar%"=="NO" goto FinDefragmentar
  echo %date% %time% - Desfragmentando
  echo Desfragmentando unidad %SystemDrive%... >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  %windir%\system32\defrag.exe %SystemDrive% -f > %destino%defrag_SD_%nombre%_%weekday_%.log
  type %destino%defrag_SD_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log

  Rem comprombamos si la unidad con datos es la misma, y si no tambien se desfragmenta
  CD > errout.tmp
  for /f "tokens=1 delims=\" %%i in (errout.tmp) do if not "%%i"=="%SystemDrive%" echo Desfragmentando tambien unidad:%%i... >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log

  for /f "tokens=1 delims=\" %%i in (errout.tmp) do if not "%%i"=="%SystemDrive%" %windir%\system32\defrag.exe %%i -f > %destino%defrag_DD_%nombre%_%weekday_%.log
  type %destino%defrag_DD_%nombre%_%weekday_%.log >> copia_%nombre%_%weekday_%.log
:FinDefragmentar

echo %date% %time% - Limpieza
echo Limpieza >> copia_%nombre%_%weekday_%.log
echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log

echo ******************************************************************************** >> copia_%nombre%_%weekday_%.log
echo Finalizada copia de seguridad %nombre% - %weekday_% >> copia_%nombre%_%weekday_%.log
echo %date% %time%  >> copia_%nombre%_%weekday_%.log
echo ******************************************************************************** >> copia_%nombre%_%weekday_%.log
echo .  >> copia_%nombre%_%weekday_%.log
echo .  >> copia_%nombre%_%weekday_%.log
echo .  >> copia_%nombre%_%weekday_%.log

type copia_%nombre%_%weekday_%.log >> copia.log
if exist N_CR.tmp del N_CR.tmp
if exist vacio.tmp del vacio.tmp
if exist errout.tmp del errout.tmp
if exist tmp$$$.bat del tmp$$$.bat
if exist la.bat del la.bat
if exist ftp_%nombre%_%weekday_%.txt del ftp_%nombre%_%weekday_%.txt
if exist ftp_%nombre%_%weekday_%.log del ftp_%nombre%_%weekday_%.log
if exist copia_%nombre%_%weekday_%.log del copia_%nombre%_%weekday_%.log


jhonny 01-02-2008 15:19:52

Cita:

Empezado por duilioisola (Mensaje 262630)
Te equivocas:D

El backup se hace en una transacción, por lo que todo lo que ve el backup es lo que ha sigo grabado definitivamente (commit).

Si, pero, ¿Si se hace un Commit mientras se esta haciendo el Backup?, supongo que el backup no tomara en cuenta ese ultimo Snapshot ¿O si?

gendelphi 01-02-2008 17:11:23

Por supuesto que no se tomará en cuenta, ya que ese COMMIT realmente pertenece a otra transacción distinta a la transacción bajo la que se está ejecutando el respaldo. El respaldo solo contendrá los datos que existan en la base de datos al momento de que se inicia la transacción del respaldo.

jhonny 01-02-2008 17:18:08

Cita:

Empezado por gendelphi (Mensaje 262700)
Por supuesto que no se tomará en cuenta, ya que ese COMMIT realmente pertenece a otra transacción distinta a la transacción bajo la que se está ejecutando el respaldo. El respaldo solo contendrá los datos que existan en la base de datos al momento de que se inicia la transacción del respaldo.

mmm, entendido :). Entonces el SnapShot sera el que es al momento de iniciar el Backup, garantizando que no habran inconcistencias en el restore, pero si hay nuevas transacciones que generen nuevos cambios a los datos en el momento que se este realizando el Backup, se perderan en caso de reemplazar la base de datos "original" por una restaurada...

danilo_candales 01-02-2008 19:52:38

Si. Está claro... Varios motores de bases de datos tienen esa posibilidad. Al menos es algo.. Si se quiere garantizar un backup "completo" entonces hay que hacerlo en un horario donde se sepa que no hay movimientos...
Si es una base de datos de carga constante las 24 horas, con esta funcionalidad, si sucede algún desastre, es lo mismo que con cualquier otra base de datos, la recuperación es el último backup y lo perdido... perdido está...
Una gran ventaja por encima de otros, que debe detenerse el servico y parar la operación. Digo yo....

Casimiro Notevi 01-02-2008 20:34:12

Cita:

Empezado por jhonny (Mensaje 262627)
¿Ahhh si?, No lo sabia :eek:, pero me imagino que solo se pueden hacer consultas, porque en caso de modificar, insertar o borrar un dato, tendriamos una inconsistencia de los mismos a la hora de hacer el restore ¿o me equivoco?.

Tal y como te han respondido, el backup se realiza como una 'transaction' más y, obviamente, los datos nuevos, modificados y borrados durante la transaction no se copiarán, en el backup irá la "realidad del mundo" que existía justo cuando se inició el backup.

Pero cuando un sistema está trabajando las 24 horas del día, y no se puede parar para hacer un backup, es una suerte contar con esta característica.



P.d.: esta misma mañana estaba conectado mediante ultravnc a uno de nuestros clientes y necesité hacer un backup antes de "tocar" la base de datos, por si acaso, es mejor prevenir. Entré en la opción de copias de seguridad de nuestra gestión comercial y apareció el mensaje: "Ahora mismo hay 35 usuarios conectados al sistema, ¿hacer el backup?" ... y pulsé en el botón "Sí" :)
Sin problemas, evidentemente.

jhonny 01-02-2008 22:12:47

Muchas gracias por la aclaración amigos :). Realmente no lo sabia... A ver, pero como dicen en alguna parte, "Si no gana la empata" :D, me confundio un poco la palabra que usan, osea Transacción, para referirse al SnapShot, tengo entendido que una transacción es una cosa que se le pida o envie a la BD, ya sea un select, update, insert, create, drop, alter, etc... pero un SnapShot es una "foto" consistente de los datos al momento de iniciar una transacción.

Bueno, ustedes me diran si por lo menos logre empatarla :D:D:D.

Casimiro Notevi 02-02-2008 21:46:56

Cita:

Empezado por jhonny (Mensaje 262868)
pero un SnapShot es una "foto" consistente de los datos al momento de iniciar una transacción.


Sí, esa descripción es más real y entendible.


La franja horaria es GMT +2. Ahora son las 02:53:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi