![]() |
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: |
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" |
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 |
¿ 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 |
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 |
No me funciona el NET STOP fbserver.
Código:
C:\>NET STOP fbserver 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? |
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.. |
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..
=) |
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 |
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 |
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. |
Cita:
|
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 servicio2- 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 |
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 |
Cita:
|
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. |
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 12:47:52. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi