Un método relativamente barato de conseguir replicación de una base de datos Firebird es crear una shadow en un disco externo de red local. Nos protege contra desastres en el disco donde se aloja la base de datos principal, aunque, evidentemente, si borramos datos de la principal, automáticamente se borrarán también de la copia “shadow”, por lo que este es un sistema válido únicamente contra daños físicos, incendios, robos, etc.
Los requisitos necesarios son:
- Equipo Servidor con Linux y Firebird
- Disco externo de red local (Ethernet)
Aunque las pruebas realizadas han sido en un servidor con Suse Linux 9.3 y Firebird 1.5, sirve cualquier distribución Linux. La base de datos (basedatosprueba.fdb) está alojada en el directorio /home/datos/ del mismo servidor. El disco externo es de conexión por red (Ethernet). Ambos están conectados a un router, aunque sirven igualmente un switch o un hub. Para los ejemplos se usan unas IP y directorios que debe sustituir por los que correspondan en su caso.
| IP | Directorio | |
|---|---|---|
| Servidor | /mnt/sombra | |
| Disco Externo | 192.198.0.125 | /shadowdatos |
Los pasos a seguir son los siguientes: Crear en el directorio /root el fichero oculto smbcredentials (se puede usar cualquier editor de textos)
1 | gedit /root/.smbcredentials |
Añadir las siguientes líneas:
username=firebird El password (clavedelroot) es el del root del servidor. password=clavedelroot
Crear, en el disco de red, el directorio para alojar la shadow de la base de datos, por ejemplo: /shadowdatos
Crear el directorio para montar el disco de red, normalmente en /mnt, creamos, por ejemplo: sombra.
1 | mkdir /mnt/sombra |
Añadir la siguiente línea al final del fichero /etc/fstab
//192.198.0.125/shadowdatos /mnt/sombra/ smbfs credentials=/root/.smbcredentials,dmask=777,fmask=777 0 0
Hay que recargar /etc/fstab para que monte la nueva entrada:
1 | mount -a (también puede reiniciar el servidor) |
Ahora sólo queda crear la shadow. Deberá conectar a la base de datos del servidor con cualquier utilidad como ibexpert, isql, ibadmin, marathon, etc. y ejecutar la siguiente sentencia sql:
1 | create shadow 1 auto “/mnt/sombra/basedatosprueba.shd” |
“basedatosprueba.shd” puede ser cualquier nombre válido para una base de datos Firebird. Esta sentencia tardará en ejecutarse según el tamaño de la base de datos y la velocidad de la red local. Desde este momento, todo lo que se haga en la base de datos principal, quedará reflejado en la shadow. En caso de necesidad, se puede usar como cualquier otra base de datos Firebird, aunque antes debemos activarla de la siguiente forma:
1 | gfix -activate -user sysdba -password masterkey "/mnt/sombra/basedatosprueba.shd" |
Para deshabilitar la shadow, use la siguiente sentencia sql:
1 | drop shadow 1 (Tenga cuidado, también se borrará la base de datos shadow) |
Autor Original: Antonio Perez Camacho
Articulos Relacionados:



GeekZero en 



Hola, soy el creador de ese texto, habéis cometido un desliz al copiarlo, la penúltima sentencia, la de activar la shadow en caso de necesidad, es:
>gfix -activate -user sysdba -password masterkey “/mnt/sombra/basedatosprueba.shd”
El resto está todo correcto, si no os importa podéis poner que enlace mi nombre a la web o al documento pdf original, muchas gracias.
Saludos.
http://www.intitec.com/varios/Firebird_Shadow%20en%20Disco%20Red.pdf
No te preocupes que ahora lo pondré, muy buen articulo el tuyo y gracias por compartirlo
A mi me sorprendió saber que había un mecanismo de replicación para firebird ya que hace tiempo estoy trabajando con él (aunque éste no sea precisamente propio del motor). Muy original tu idea.
Hola, GeekZeo: Sí, este mecanismo de replicación parece que es poco conocido, pero muy util además de simple de activar.
Gracias por el enlace.
Saludos.