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)
-   -   Respaldo Base de Datos (https://www.clubdelphi.com/foros/showthread.php?t=48683)

gescoto99 02-10-2007 01:01:51

Respaldo Base de Datos
 

Un cliente me ha solicitado que le de un script para hacer un respaldo de la base de datos y despues con un software que el tiene se programen los respaldos de toda la informacion que desee.
Hasta aqui no hay duda. Le envie el script con el comando gbak sin embargo me indica que su software de respaldo antes de ejecutar el comando verifica que no se este ejecutando el servicio, por lo que al detectar que el firebird esta funcionado aborta ese respaldo.
Existe algun comando para detener la base de datos y otro para arrancar la base de datos? y asi poder insertar estos al principio y fin de mi script?:rolleyes:

pcicom 02-10-2007 03:36:48

puedes hacer un .bat

echo RESPALDANDO Firebird Server
NET STOP "Firebird Server - DafaultInstance"
COPY c:\direcorio\base.fdb c:\Respaldos\
NET START "Firebird Server - DafaultInstance"


Siempre y cuando lo tengas funcionando como un SERVICIO de Windows..

Si utilizas el Guardian seria asi:

echo RESPALDANDO Firebird Guardian
NET STOP "Firebird Guardian - DafaultInstance"
COPY c:\direcorio\base.fdb c:\Respaldos\
NET START "Firebird Guardian - DafaultInstance"

pvizcay 03-10-2007 05:15:12

los backups se pueden hacer en "caliente", no hace falta parar la base de datos en realidad.. y es más seguro que hacer un copy.. yo buscaría en internet por ese lado

salu2

Lepe 03-10-2007 13:07:16

¿ qué componentes de acceso usas ?

Yo uso los MDOLIB y tiene un par de componentes para hacer backup y restore (no los he probado) pero supongo es la solución.

Saludos

duilioisola 03-10-2007 15:19:40

Aquí les va un batch bastante grande que fui modificando a lo largo de años, con cosas de otra gente, ejemplos que fui encontrando y mías...

Espero no se enojen los autores de las diferentes partes, pues no me acuerdo de sus nombre.

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 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=NombreDelCliente
set nombreBD=NombreDeLaBD
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

cd %destino%

set weekday_=%1

echo *******************************************************************************
echo ***                                                                        ***
echo ***                  ESTA PANTALLA SE PUEDE MINIMIZAR                      ***
echo ***                                                            (VER 070629) ***
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 "%ftp%"=="NO" goto FinFTP
  echo %date% %time% - Envio de Reportes
  echo %date% %time% >> copia_%nombre%_%weekday_%.log
  echo FTP a servidor externo >> copia_%nombre%_%weekday_%.log
  echo -------------------------------------------------------------------------------- >> copia_%nombre%_%weekday_%.log
  if exist ftp_%nombre%_%weekday_%.txt del ftp_%nombre%_%weekday_%.txt
rem *** Poner una IP correcta
  echo open 123.123.12
3.123> ftp_%nombre%_%weekday_%.txt
rem ***

  echo user usuario>> ftp_%nombre%_%weekday_%.txt
  echo contrasena>> 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
rem *** Poner carpeta correcta
      echo cd directorio>> ftp_%nombre%_%weekday_%.txt
rem ***

      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 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


duilioisola 03-10-2007 15:33:58

No me funciona el NET STOP fbserver.
Código:

C:\>NET STOP fbserver
Error de sistema 1060.
El servicio especificado no existe como servicio instalado.

C:\>NET STOP fbguard
Error de sistema 1060.
El servicio especificado no existe como servicio instalado.

Probé con fbserver, fbguard, fbserver.exe y fbguard.exe (y tambien en mayúsculas)
Tengo el Firebird 1.5 Server instalado como servicio.

y ya que estamos...
¿cómo se puede ver una lista de los nombre de los servicios?

pcicom 03-10-2007 18:26:00

debe se ser como sigue:

Si lo tienes como SERVICIO
NET STOP "Firebird Server - DefaultInstance"

Si lo tienes con el Guardian
NET STOP "Firebird Guardian -Default Instance"


Y para INICIARLOS

Si lo tienes como servicio
NET START "Firebird Server - DefaultInstance"

Si lo tienes como Guardian.
NET START "Firebird Guardian - DefaultInstance"



Y Listo...


De echo el comando NET START / NET STOP detiene cualquier servicio de WINDOWS siempre y cuando no sean del sistema, y puedes usarlo como tu quieras...

La ventaja que le veo a este METODO de detener el servicio, es la simplesa, ya que no requiere comandos complejos, simplemente cambiar los datos de tu .bat y Listo


SALUDOS..

pvizcay 04-10-2007 15:49:20

si firebird tiene un programa de backup en caliente porque todo el mundo insiste en parar el servidor... vamos que no es tán dificil de usar..

=)

gescoto99 04-10-2007 16:20:07

Graci por los mensajes
 
Hola, lo de parar el servidor tiene una razon.
Mi cliente me indica que su software de respaldos valida que no este ejecutandose ningun proceso.
Esa es la razon.

Saludos

Gabriel 04-10-2007 16:51:28

BacKups
 
Opino, humildemente que no hay que parar el servidor, Firebird realiza backups en caliente, de la ultima transacción aceptada, y en el directorio o disco que le indiques.

En ese respaldo, no se ejecuta ningún proceso, ja que es un simple fichero.
En cualquier sistema operativo, siempre se estan ejecutando procesos.

Las cintas de backups, no realizan copias de ficheros abiertos, la base de datos firebird, puede o no estar levantada, dependiendo de que algun usuario este accediendo.
Pero lo que seguro, no esta abierta es la copia de seguridad.
Puedes realizar cualquier utilidad de GBack, incluso programarte ( jo lo tengo asi ) un pequeño ejecutable, con los IBX o MDO, i desde programador de tareas de Windows, programo las veces que quiero arrancar ese ejecutable, que me realiza la copia.

Tengo respaldo de la base de datos, las veces que se me antoje al cabo del dia.
Si a la noche una cinta, me recoje los backup.

Pues casi a prueba de bombas.
Bueno eso creo

Saludos

duilioisola 04-10-2007 16:55:21

Con respecto a ese sotware de respaldos
1. No me gusta. :D
2. Quizás sea configurable y se le pueda decir que pase por alto los procesos de Firebird
3. Solo debería hacer copia del backup. Hacer copia de la base no garantiza que se pueda usar posteriormente.

laukri 04-02-2008 12:26:38

Cita:

Empezado por pcicom (Mensaje 235460)
puedes hacer un .bat

echo RESPALDANDO Firebird Server
NET STOP "Firebird Server - DafaultInstance"
COPY c:\direcorio\base.fdb c:\Respaldos\
NET START "Firebird Server - DafaultInstance"


Siempre y cuando lo tengas funcionando como un SERVICIO de Windows..

Si utilizas el Guardian seria asi:

echo RESPALDANDO Firebird Guardian
NET STOP "Firebird Guardian - DafaultInstance"
COPY c:\direcorio\base.fdb c:\Respaldos\
NET START "Firebird Guardian - DafaultInstance"

hola! probe parar el servidor con la instruccion NET STOP, funciona pero luego no puedo hacer el backup porq me dice que la base de datos no esta disponible...como puedo hacer para parar el servidor y luego hacer un backup con GBAK?

Lepe 04-02-2008 17:06:37

Se han mezclado dos técnicas y hay que aclarar ambas.

1- pcicom en su primer mensaje:Copiar el fichero de la base de datos.
Como ya han dicho, no garantiza que después se pueda acceder. Se trata de parar el servicio, copiar el archivo fdb y después poner en marcha el servicio
2- Gabriel: Realizar Backup propiamente dicho.
Usar Gbak creando un fichero *.FBK Si el cliente pide que se pare el servicio, tendrás que lanzar el gbak y cuando termine, entonces parar el servicio Firebird. Y cuando quieras volver a arrancarlo. Realmente no es necesario parar el servicio Firebird.
Es importante no mezclar las dos técnicas, porque si paras el servicio de Firebird, ¡¡nadie podrá conectarse a ninguna base de datos Firebird en ese ordenador!! y eso incluye a la utilidad gbak, gfix, tu programa Delphi, etc.

Saludos

Gabriel 04-02-2008 20:13:15

Respaldos Firebird
 
Hola
Como comente antes

Llevo años realizando copias de seguridad con GBack, sin parar el servicio Firebrid.

He tenido que recuperar, algunas, (no demasiadas, Firebrid es demasiado bueno) solamente un par por caidas de rallos. Recuperar copia (echa en caliente) i listo a trabajar de nuevo.

Como comente tambien, tengo un ejecutable echo con IBX, para ir mas rapido i no tener que teclear. Por cierto, desde la version Interbase 6.0 i luego Firebird 1, sin problemas.

Asegurado No hay que parar el servicio.
Por cierto para recuperar una copia, tiene que estar el servicio levantado, pero ningun usuario conectado.

Saludos

laukri 05-02-2008 17:29:21

Cita:

Empezado por Gabriel (Mensaje 263325)
Por cierto para recuperar una copia, tiene que estar el servicio levantado, pero ningun usuario conectado.

Saludos

Hay algun comando que desconecte a todos los usuarios o que suspenda el servicio parcialmente (para que solo se pueda usar el gbak) o algo asi?

Gabriel 05-02-2008 23:26:50

Restaurar Base de Datos
 
Creo, que si, pero ahora mismo lo desconozco.

Jo, lo que hago, es desconectar el servidor de la red y recuperar la copia.

Pero como te comente antes, Firebird, falla muy poco.
En años, creo que he tenido que recuperar 2 o 3 copias, por rayos e incluso una vez, por que llenaron el disco, donde estaba la base de datos.
Pero, el que te comento, que he tenido que recuperar un par de copias, lo tengo montado, en mas de 70 ordenadors.
mas o menos cada 20 atacan a un servidor diferente.
Tengo una utilidad, que la activo, con el programador de tareas de windows, y me hace un par de copias diarias.

Lepe 06-02-2008 10:14:03

Podrías usar mensajes.

Cuando entras para realizar una tarea, ejecutas un procedimiento almacenado que tiene un "post_event 'Salir-Usuarios' ". Todos los usuarios que estan conectados a la base de datos, reciben ese evento, (tu aplicación usará un TIBEvents para detectarlo), y pones en marcha una cuenta atrás para cerrar tu aplicación.

A veces los usuarios se van a tomar café y dejan el equipo encendido, así puedes cerrar por código Delphi la conexión al servidor y la base de datos.

Si paras el servicio, tendrás que adaptar tu aplicación para capturar ese error y sustituir el mensaje "Database unavailable" por "Se está realizando un mantenimiento en la base de datos".

Si quieres hacer un gbak en caliente, podrías crear un archivo en el servidor (si tienes permisos) "HaciendoMantenimiento.txt" y tu aplicación detectar si existe. Cuando termines el gbak, borras ese archivo para que todos puedan entrar de nuevo.

Saludos


La franja horaria es GMT +2. Ahora son las 07:46:17.

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