post icon

Replicacion de datos en Firebird

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

Comentarios desde Facebook:

  1. avatar
    antonio SPAIN Mozilla Ubuntu Linux
    3 Febrero 2010 at 18:32 #

    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.

     

  2. avatar
    GeekZero PARAGUAY Google Chrome Windows
    3 Febrero 2010 at 17:56 #

    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.

  3. avatar
    antonio SPAIN Mozilla Ubuntu Linux
    3 Febrero 2010 at 16:24 #

    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%20e
     

     

Responder