Sistema de backups BACULA

De Wikillano

Contenido

El sistema se divide en:

   * Bacula director El demonio encargado de gestionar todas las operaciones de backup. El director sabe los trabajos que se van a realizar, cuando , donde y como. Y además se encarga de restaurar los ficheros que le pidamos y su verificación (una especie de suma de comprobación de integridad). Se puede instalar en cualquier máquina de la red.
   * Bacula File El cliente. Es necesario instalarlo en todas las máquinas de las que queramos hacer respaldo. Su función es leer y transmitir los ficheros que el director le pida, o restaurarlos.
   * Bacula Storage Este demonio se encarga de la lectura/escritura física en los volúmenes que estén definidos (cintas, ficheros)


Para el servidor Bacula debemos instalar los siguiente paquetes,

en ubuntu:

   * apt-get install mysql-server-4.1
         o Una vez este instalado Mysql deberemos ponerle una contraseña al usuario root
   * apt-get install bacula-sd-mysql
         o Herramientas utiles para manejar las copias bscan.. etc
   * apt-get install bacula-director-mysql
         o La instalación de este paquete nos pedirá el usuario y password mysql de root y un password para la aplicación bacula.


   * apt-get install bacula-sd
         o Paquete de instalacion bacula storage



Para instalar los clientes:

   * apt-get install bacula-fd


Para redhat:

   * bacula-client-1.38.11-3.el3.i386.rpm



Los ficheros de configuracion de bacula contienen los password encriptados podemos crear unos nuevos con la herramienta:

makepasswd --clearfrom=pass --crypt-md5 –verbose

pass es el fichero que contiene el password. si no se dispone de esta utilidad se puede instalar desde los repositorios. En los ficheros de configuración

Configuración storage:

fichero /etc/bacula/bacula-sd.conf


Aquí definimos el servidor de storage:

Storage {                             # definition of myself
 Name = sol-bserver-sd
 SDPort = 9103                  # Director's port
 WorkingDirectory = "/var/lib/bacula"
 Pid Directory = "/var/run/bacula"
 Maximum Concurrent Jobs = 20
 SDAddress = 172.24.43.74
}
##########################################################
# DIRECTORbacula-fd
##########################################################



Aquí configuramos el director (el mismo servidor)

Director {
 Name = sol-bserver-dir
 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
}


##########################################################
# Restricted Director, used by tray-monitor to get the
#   status of the storage daemon
##########################################################


Director {
 Name = sol-bserver-mon
 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
 Monitor = yes
}

##########################################################
# Devices
##########################################################


En esta parte configuramos los devices donde dejaremos las copias de seguridad, en este caso lo dejamos en /backup el nombre de nuestro device es disco.

Device { 
 Name = disco 
 Media Type = File
 Archive Device = /backup
 LabelMedia = yes;                   # permite a bacula etiquetar los volumenes
 Random Access = Yes;
 AutomaticMount = yes;               # when device opened, read it
 RemovableMedia = no;
 AlwaysOpen = no;
}


Messages {
 Name = Standard
 director = sol-bserver-dir = all
}


Configuración de fichero Director:

fichero /etc/bacula/bacula-dir.conf

Lo primero es configurar el director, (servidor)

#########################################
# Director
#########################################

Director {                            # define myself
 Name = sol-bserver-dir
 DIRport = 9101                # where we listen for UA connections
 QueryFile = "/etc/bacula/scripts/query.sql"
 WorkingDirectory = "/var/lib/bacula"
 PidDirectory = "/var/run/bacula"
 Maximum Concurrent Jobs = 1
 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"         # Console password
 Messages = Daemon
 DirAddress = 172.24.43.74
}

Aquí se definen los jobs con las opciones por defecto, lo mejor es crear una default para todos y después en cada job independiente modificar las opciones necesarias

#########################################
# JOB DEFINITIONS
#########################################

#definicion para máquinas windows

JobDefs {
 Name = "windows"
 Type = Backup
 FileSet = "windows"
 Storage = files
 Messages = Standard
 Priority = 10
}

# Definicion para máquinas linux

JobDefs {
 Name = "linux"
 Type = Backup
 FileSet = "linux"
 Storage = files
 Messages = Standard
 Priority = 10
}

# Definicion default
JobDefs {
 Name = "default"
 Type = Backup
 Storage = files
 Messages = Standard
 Priority = 10
}

En esta parte definimos los jobs de los clientes a hacer backup, uno por cada máquina.

########################################
# JOBS
########################################

#maquina Oracle BI
Job {
 Name = "ravel.oracle.BI_01.isclab.es"
 Client = ravel.oracle.BI_01.isclab.es
 JobDefs = "default"
 FileSet = "ravel.oracle.BI_01.isclab.es"
 Level = "incremental"
 Pool = incr-diaria
 Schedule = "diaria"
}

En este apartado definimos los directorios a copiar, cada fileset es de un cliente, a no ser que queramos copiar lo mismo de muchas máquinas, entonces podemos llamarlo genérico y en el apartado jobs definírselos a las máquinas que queramos.

########################################
# Lista de FILESETS
########################################

# fileset para cliente ravel.oracle.BI_01.isclab.es
#Oracle BI 

FileSet {
 Name = "ravel.oracle.BI_01.isclab.es"
 Include {
       File = "/home/oracle/work"
       File = "/data/backup"

       Options { signature=MD5
               compression=GZIP
               }
 }
}

Aquí definimos los schedules que queremos, en nuestro caso tenemos :

  • Diario

de Lunes a Viernes incremental. Un full backup los Domingos.

  • Semanal

Un backup Full los Domingos.

  • Mensual

Un Full backup cada primer domingo de mes.

Como se puede observar los backups Full los hace en el pool: full-semanal.

##########################################
# Lista de SCHEDULES
##########################################

Schedule {
       Name = "diaria"
       Run = Level=incremental Pool=incr-diaria mon-fri at 04:00
       Run = Level=Full Pool=full-semanal sun at 04:00
}

Schedule {
        Name = "semanal"
        Run = Level=Full Pool=full-semanal sun at 04:00
}
Schedule {
       Name = "mensual"
       Run = Level=Full Pool=full-mensual 1st sun at 04:00
}

En este apartado creamos los clientes, así el servidor director podrá conectar con ellos.

##########################################
#Lista de CLIENTES
# Client (File Services) to backup
#########################################

# Maquina oracle BI (debian-oracle)
Client {
 Name = ravel.oracle.BI_01.isclab.es
 Address = 172.24.43.52
 FDPort = 9102
 Catalog = MyCatalog
 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
#  File Retention = 30 days            # 30 days
#  Job Retention = 6 months            # six months
#  AutoPrune = yes                     # Prune expired Jobs/Files
}

En este punto hemos de definir el servidor de storage, hay que tener en cuenta que en el apartado Device debemos poner el mismo nombre que pusimos en el fichero de configuración del storage.

##########################################
# Conector al sistema de copia
# Definition of file storage device
##########################################
  
Storage {
 Name = files 
 Address = 172.24.43.74                # N.B. Use a fully qualified name here
 SDPort = 9103
 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
 Device = disco
 Media Type = File
}

Aquí es donde se define la conexión con la BBDD

########################################### 
# Catalogo
###########################################

Catalog {
 Name = MyCatalog
 dbname = bacula; DB Address = "127.0.0.1"; user = bacula; password = "passeord aplicación bacula"
}

y por último definimos los pools

incr-diaria
Retención de las cintas: 8 días
Máxima capacidad de la cinta 4Gb
Duración durante la cual una cinta está append: 1 día

full-semanal
Retención de las cintas: 15 días
Máxima capacidad de la cinta 4Gb
Duración durante la cual una cinta está append: 1 día

full-mensual
Retención de las cintas: 365 días
Máxima capacidad de la cinta 4Gb
Duración durante la cual una cinta está append: 1 día

Debido a la falta de espacio para hacer backups la retención de los backups puede variar. (la Full mensual no se utiliza).

#############################################
#Lista de POOLS
# Default pool definition
#############################################

	Pool {
 Name = incr-diaria
 Pool Type = Backup
 Recycle = yes                       # Bacula can automatically recycle Volumes
 AutoPrune = yes                     # Prune expired volumes
 Volume Retention = 8 days         #
 Accept Any Volume = yes             # write on any volume in the pool
 Maximum Volume Bytes = 4g
 Volume Use Duration = 1d
 LabelFormat = "Vol"
}

Pool {
 Name = full-semanal
 Pool Type = Backup
 Recycle = no                       # Bacula can automatically recycle Volumes
 AutoPrune = yes                     # Prune expired volumes
 Volume Retention = 15 days         #
 Accept Any Volume = yes             # write on any volume in the pool
 Maximum Volume Bytes = 4g
 Volume Use Duration = 1d
 LabelFormat = "Vol-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-${Hour}${Minute}${Second}"
}
Pool {
 Name = full-mensual
 Pool Type = Backup
 Recycle = no                       # Bacula can automatically recycle Volumes
 AutoPrune = yes                     # Prune expired volumes
 Volume Retention = 365 days         #
 Accept Any Volume = yes             # write on any volume in the pool
 Maximum Volume Bytes = 4g
 Volume Use Duration = 1d
 LabelFormat = "Vol-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}-${Hour}${Minute}${Second}"


Configuración de cliente: (file-daemon) fichero /etc/bacula/bacula-fd.conf

Aquí definimos quien es el director (servidor) sol-bserver-dir es el director de bacula.

#
# Default  Bacula File Daemon Configuration file
#
#  For Bacula release 1.36.2 (28 February 2005) -- debian 3.1
#
# There is not much to change here except perhaps the
# File daemon Name to
#

#
# List Directors who are permitted to contact this File daemon
#
Director {
 Name = sol-bserver-dir
 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
}


Este director lo usa internamente para ver el estado del file Daemon

#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
Director {
 Name = casals-mon
 Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3L"
 Monitor = yes
}

Configuración del cliente

#
# "Global" File daemon configuration specifications
#
FileDaemon {                          # this is me
 Name = casals-fd
 FDport = 9102                  # where we listen for the director
 WorkingDirectory = /var/lib/bacula
 Pid Directory = /var/run/bacula
 Maximum Concurrent Jobs = 20
 FDAddress = 172.24.22.249
}


Envio de correos de alerta y warning hacia ek director.

# Send all messages except skipped files back to Director
Messages {
 Name = Standard
 director = sol-bserver-dir = all, !skipped
}
Herramientas personales