Translate

martes, 18 de diciembre de 2012

INSTALANDO APACHE 2.2, PHP 5.3, MYSQL 5.1 Y PHPMYADMIN 3.2 PARA WINDOWS 7

Les comento, estaba escribiendo como instalar Apache 2.2.11 con PHP 5.3.0 ya que tiene unos pequeños tips para que funcione correctamente en windows.

Como siempre bajo el Apache 2.2.11 en www.apache.org, PHP 5.3.0 en www.php.net.

Instalo todo correctamente y cuando quiero configurar el apache para que reconozca el php, me encuentro que el archivo php5apache2_2.dll no estaba.

Entonces comencé la búsqueda para ver como se hacia, hayo este fantástico tutoríal en vídeo, donde advierto un pequeño detalle,  el php5.3.0 que había bajado era el siguiente php-5.3.0-nts-Win32-VC9-x86.zip y el del tutoríal era el php-5.3.0-Win32-VC6-x86.msi.

Viendo esto voy nuevamente al site de PHP y cuando entro nuevamente a bajar el archivo veo al costado izquierdo lo siguiente "Do NOT use VC9 versión with apache.org binaries", mas arriba explica que la versión VC9 esta compilada con Microsoft Visual Studio 2008, pero los binarios de apache están compilados con Visual Studio 6.

Cuando procedí a instalar la versión VC6 todo salio funcionando como normalmente sucedía.

Bueno otra cosa el tutoríal lo hizo la gente de webdevcodex.com. realmente es muy bueno y además explica como instalar Mysql y PHPMyAdmin, no se lo pierdan.


lunes, 17 de septiembre de 2012

BACKUPS DE MYSQL

Esta es la Segunda versión del script para Mysql.

Mejoras:
  1. Genera los directorios
  2. Genera archivos de Logs
  3. Borra por seguridad el archivo arrays.file 
Script 

#!/bin/bash

declare -a array1
declare -a counts

## BEGIN CONFIG ## 

host=XX.XX.XX.XX
user=dumps
pass='password'
datetime=$(date +%Y%m%d)
timedate=$(date +%T)
pathbkp=/var/local/dumps
filename=$pathbkp/arrays.file
logdir=$pathbkp/LOG/

## END CONFIG ##

a=0

 if [ ! -d $pathbkp ]; then    
    mkdir -p $pathbkp
    mkdir -p $logdir
    chown -R mysql.mysql $pathbkp
    chmod -R 755 $pathbkp 
    touch $filename
 else
    touch $filename
 fi  

args=("-h $host -u $user -p$pass" "-h $host -u $user -p$pass --opt ")

mysqlshow ${args[0]} > $filename

counts=( `cat "$filename" | sed -e '/+/d' | tr -d '|' | sed -e '/Database/d'| sed -e '/information_schema/d' | wc -w `)
array1=( `cat "$filename" | sed -e '/+/d' | tr -d '|'  | sed -e '/Database/d' | sed -e '/information_schema/d'` )

while [ $a -lt $counts ]
    do
        echo ${array1[$a]}-$datetime-$timedate.sql
        mysqldump ${args[1]} ${array1[$a]} > $pathbkp/${array1[$a]}-$datetime-$timedate.sql2>&1

        if [ "$?" != "0" ]; then
       
        echo ${array1[$a]}-$datetime-$timedate.sql - $datetime - $timedate "No se realizo Dumps" >>  $logdir/dumps-error.log

        else

        echo ${array1[$a]}-$datetime-$timedate.sql - $datetime - $timedate "Se realizo Dumps" >>  $logdir/dumps-exito.log

        fi
       
        let a+=1
    done

rm -f $filename

exit 0

lunes, 10 de septiembre de 2012

BACKUPS EN POSTGRESQL

Este script permite hacer dumps de las bases y tiene la particularidad que si agregamos una mas a nuestro servidor la reconoce y hace el dump !. Lo unico el script debe estar en
/var/lib/postgresql

Script

#!/bin/bash 

 declare -a counts
 declare -a array1 

 ## BEGIN CONFIG ##

 HOST=XX.XX.XX.XX
 BACKUP_DIR=/var/lib/postgresql/dumps
 USER=postgres
 datetime=$(date +%Y%m%d)
 filename=/var/lib/postgresql/dumps/arrays

 ## END CONFIG ##

a=0

 if [ ! -d $BACKUP_DIR ]; then  
    mkdir -p $BACKUP_DIR
    chown -R postgres.postgres $BACKUP_DIR
    chmod -R 755 $BACKUP_DIR  
    touch $filename
 fi    

psql -h $HOST -U $USER -l | awk ' (NR > 2) && (/[a-zA-Z0-9]+[ ]+[|]/) && ( $0 !~ /template[0-9]/) { print $1 }' > $filename    

counts=( `cat "$filename" | wc -w `)
array1=( `cat "$filename"` )

while [ $a -lt $counts ]
do
echo ${array1[$a]}-$datetime.sql
pg_dump -h $HOST -U $USER --column-inserts ${array1[$a]} > $BACKUP_DIR/${array1[$a]}-$datetime.sql
let a+=1
done

exit 0

miércoles, 29 de agosto de 2012

MANUAL DE IMPLEMENTACION DE BACULA

Introducción 

Antes de comenzar con la instalación y configuración del Bacula, en el caso que lo montemos en una Distribución basada en REDHAT, debemos cercioranos que las librerías que se detallan estén instaladas:
  • gcc, 
  • gcc-c++,
  • libstdc++ 
  • mysql
Echo este chequeo podemos compilar el source de bacula.En este ítem la instalación esta referida para dos distribuciones de Linux:
  • RedHat/CentOS
  • Debian/Ubuntu


Comentario

Este Manual sufre cambios muy a menudo, chequen siempre, he agregado un item mas en Errores.

Instalación de Bacula

Bacula en CentOS con MySQL
Para la instalación de la ultima versión de Bacula estable debemos bajar el paquete tar desde la pagina oficial de Bacula: www.bacula.org. La instalación en CentOS debe tener la siguiente características para su configuración:

1.- Mysql instalado, si no lo esta,  deberemos instalar los siguientes paquetes:

yum install mysql.x86, mysql-server y mysql-devel

2.- Asegurarse que no falten las librerías gcc, gcc-c++, libstdc++
yum install gccXX gccXX-c++ libstdc++ libstdc++XX-devel  (chequear siempre la ultima versión de las librerías)

Ahora bien, procederemos a descomprimir el paquete tar en el  path: /usr/local/src, luego crearemos un script que lo llamaremos
"cfgure.sh" y lo copiamos dentro del directorio del Bacula, a continuación transcribo el script propuesto :

CFLAGS="-g -O2 -Wall" \
./configure \
--sbindir=/home/bacula/bacula/bin \
--sysconfdir=/home/bacula/bacula/bin \
--with-pid-dir=/home/bacula/bacula/bin/working \
--with-subsys-dir=/home/bacula/bacula/bin/working \
--enable-smartalloc \
--with-mysql \
--with-working-dir=/home/bacula/bacula/bin/working \
--with-dump-email=bacula@sudominio.com.ar \
--with-job-email=bacula@sudominio.com.ar \
--with-smtp-host=mail.sudominio.com.ar \
--enable-tray-monitor \
--enable-readline \
make
make install  

Este script configura, compila e instala al director de bacula automáticamente.

Bacula en Debian/Ubuntu con MySQL
En este ítem trato la instalación de Bacula utilizando los paquetes tar que es el caso de la "Opción 1", pero además explico como instalar a través de apt-get que seria la "Opción 2" siendo este el recomendado para implementar.
Opción 1: 
 
1.- Liberia mínima necesaria para compilar el paquete tar:
 
Instalar Mysql en primer lugar
apt-get install mysql-server-5.1

Instalado el mysql, procederemos a instalar las siguientes librerías:
apt-get install gcc-4.5 gcc binutils-doc gcc-4.5-locales gcc-multilib autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.4-multilib libmudflap0-4.4-dev gcc-4.4-doc gcc-4.4-locales libgcc1-dbg libgomp1-dbg libmudflap0-dbg gcc-4.5-multilib libmudflap0-4.5-dev gcc-4.5-doc binutils-gold glibc-doc automake g++-4.4 libstdc++6-4.4-dev g++-multilib g++-4.4-multilib libstdc++6-4.4-dbg libstdc++6-4.4-doc lib32stdc++6-4.4-dbg

2.- Luego creamos el siguiente archivo ejecutable que lo llamaremos cfgure.sh, este script configurara, compilara e instalara al director de bacula automáticamente. Esta configuración lo va instalar bajo la home del usuario que este utilizando para bacula (en este caso bajo bacula )

CFLAGS="-g -O2 -Wall" \
./configure \
--sbindir=$HOME/bacula/bin \
--sysconfdir=$HOME/bacula/bin \
--with-pid-dir=$HOME/bacula/bin/working \
--with-subsys-dir=$HOME/bacula/bin/working \
--enable-smartalloc \
--with-mysql \
--with-working-dir=$HOME/bacula/bin/working \
--with-dump-email=bacula@senasa.gov.ar \
--with-job-email=bacula@senasa.gov.ar \
--with-smtp-host=senasamail.senasa.gov.ar \
--enable-tray-monitor \
--enable-readline \
make
make install

Opción 2:
Nota: Tener en cuenta que esta opción instala una versión de bacula anterior
 
Bacula en Ubuntu 10.10

apt-get install bacula-client bacula-common bacula-common-mysql bacula-console bacula-director-common bacula-director-mysql bacula-fd bacula-sd bacula-sd-mysql bacula-server bsd-mailx dbconfig-common libpython2.6 mtx postfix ssl-cert bacula-doc bacula-traymonitor dds2tar scsitools sg3-utils mt-st procmail postfix-mysql postfix-ldap postfix-pcre sasl2-bin resolvconf postfix-cdb xul-ext-lightning openssl-blacklist default-mta fetchmail myspell-en-us myspell-es

Bacula en Debian 6.0 por Repositorios

apt-get install bacula-client bacula-common bacula-common-mysql bacula-console bacula-director-common bacula-director-mysql bacula-fd bacula-sd bacula-sd-mysql bacula-server bacula-doc bacula-traymonitor 
 
Bacula en Debian con Postgresql

Para una correcta instalación debemos en primer lugar instalar en primer lugar la base de datos:

1.- Postgresql-8.4
apt-get install postgresql-8.4 postgresql-contrib-8.4 postgresql-client-8.4 postgresql-pltcl-8.4 postgresql-plperl-8.4 postgresql-doc-8.4 libdbd-pg-perl openssl-blacklist tclreadline uuid
Luego de instalar el postgresql debemos instalar el software de bacukp con la siguiente sentencia:

2.- Bacula
apt-get install bacula-server bacula-common-pgsql bacula-director-pgsql bacula-console bacula-sd-pgsql bacula-fd bacula-doc bacula-traymonitor

Configuración de Bacula

Configuración del Director
En la configuración del Director debemos tener en cuenta tres archivos de configuracion 
  • bacula-dir.conf
  • bacula-sd.conf
  • bacula-fd.conf 
Para entender un poquito la configuración del director (bacula-dir.conf), es un archivo maestro que maneja el storage, y los clientes. 

Pero con solo este archivo no podremos hacer que bacula guardes los volumen físicamente, pare ellos necesitamos del daemon storage que utiliza el archivo de configuración bacula-sd.conf, y en este se indica el lugar donde debe escribir los volúmenes y por ultimo es el archivo de configuracion del file deamon (bacula-fd,conf) que establece entre el servidor  de bacula y el servidor a backupear.
 
Archivo bacula-dir.conf
 
El archivo que configura el director se llama bacula-dir.conf, aquí se debe declara los storage, monitor, cliente y mensajes que enviá el bacula avisando las novedades que ocurren con los backups.


Este ejemplo se basa sobre una instalación echa con el paquete tar, a través del script "cfgure.sh" donde le definimos varios parámetros

Director {
Name = Bacula-Director-1-dir
DIRport = 9101
QueryFile = "/home/bacula/bacula/bin/query.sql"
WorkingDirectory = "/home/bacula/bacula/bin/working"
PidDirectory = "/home/bacula/bacula/bin/working"
Maximum Concurrent Jobs = 20
Password = "D1r3ct0r1" # Console password
Messages = Daemon
DirAddress = 172.26.160.216

 
#------- Definition of file storage device -------------------

Storage {
Name = Strg-Raidubuntu
Address = 172.26.160.216 # N.B. Use a fully qualified name here
SDPort = 9103
Password = "strgD1r3ct0r1"
Device = "Storage-Raidubuntu"
Media Type = File
#------- Generic catalog service ----------------------------

Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
#------- Reasonable message delivery ------------------------ 
 
Messages {
Name = Standard
mailcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula: Necesita intervención %j\" %r"
mail = suusuario@.sudominio.com.ar = all, !skipped
operator = suusuario@.sudominio.com.ar = mount
console = all, !skipped, !saved
append = "/home/bacula/bacula/bin/working/log" = all, !skipped
catalog = all

 
Messages {
Name = Daemon
mailcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\(Bacula-Director-1\) \<%r\>\" -s \"Bacula-Director-1 daemon message\" %r"
mail = suusario@sudominio.com.ar = all, !skipped
console = all, !skipped, !saved
append = "/home/bacula/bacula/bin/working/log" = all, !skipped
}
#------- Restricted console used by tray-monitor ---------------
Console {
Name = Bacula-Director-mon
Password = "D1r3ct0r1m0n"
CommandACL = status, .status
}
#------- CLIENT REMOTE CASA CENTRAL ------------------ 
 
@/home/bacula/bacula/client/Myself.conf
@/home/bacula/bacula/client/Gta.conf
@/home/bacula/bacula/client/Gtc.conf

Para tener en cuenta:

Como un directorio maneja varios clientes, se podría detallar todo sobre el bacula.conf pero quedaría muy desprolijo, por eso se utiliza el include (@) para que sea una configuración limpia y entendible, esto lo colocaremos al final del archivo, bacula-dir.conf y lo dirigiremos hacia la carpeta que previamente creamos "client", ejemplo de esto nos quedaría así: 
 
@/home/bacula/bacula/client/Myself.conf  (@ : Hace un include de los archivos que le indiquemos)

El bacula-dir.conf tiene tres password, uno es el correspondiente al Director, el cual se configura en los archivos de configuración de las consolas bat.conf y bconsole.conf, el segundo es para conectarse con el storage daemon y el tercer es para el monitor, el cual se utiliza en los archivo (bacula-fd.conf y bacula-sd.conf),  pero esto lo veremos en el ítem siguiente con mas detalles. 
  • El primero es el Password del Director que esta en la cabecera del archivo
  • El Segundo password corresponde al Storage Daemon.
  • El tercer es la Consola, es para que los client puedan ser monitoreados por el Director 
Envió de Mail Declarar el servidor de mail en: mailcommand y operatorcommand 
  • mailcommand : Es utilizado para enviar mail que no tienen problemas 
  • operatorcommand: Avisa que hay problemas con los backups 
Como ejemplo para la configuración del envió de mail, veremos un archivo bacula-dir.conf (recortado) del Bacula-Director:
Messages {
Name = Standard
mailcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula: Necesita intervención %j\" %r"
mail = bacula@sudominio.com.ar = all, !skipped
operator = bacula@sudominio.com.ar = mount
console = all, !skipped, !saved
append = "/home/bacula/bacula/bin/working/log" = all, !skipped
catalog = all
}

Messages {
Name = Daemon
mailcommand = "/home/bacula/bacula/bin/bsmtp -h mail.sudominio.com.ar -f \"\
(Bacula-Director-1\) \<%r\>\" -s \"Bacula-Director-1 daemon message\" %r"
mail = bacula@sudominio.com.ar = all, !skipped
console = all, !skipped, !saved
append = "/home/bacula/bacula/bin/working/log" = all, !skipped
}
....

Archivo bacula-fd.conf
Se instala en los Servidores a Backupear, es el cliente que permite la conexión con el servidor, algunos tip's con respecto al "lenguaje" del archivo de configuración bacula-fd.conf:

Password del Client (ej: Mail.conf)
 
Director {
Name = Bacula-Director-1-dir
Password = "ClientMail"
}

Password de Console 
 
Director {
Name = Bacula-Director-1-mon
Password = "D1r3ct0r1m0n"
Monitor = yes
}

Como ejemplo veremos el bacula-fd.conf del Bacula-Director-1 

bacula-fd.conf:
-----------------------------------------------------------------------------------
Director {
Name = Bacula-Director-1-dir
Password = "D1r3ct0r1Client"
}

Director {
Name = Bacula-Director-1-mon
Password = "D1r3ct0r1m0n"
Monitor = yes
}

FileDaemon {
Name = Bacula-Director-1-fd
FDport = 9102
WorkingDirectory = /home/bacula/bacula/bin/working
Pid Directory = /home/bacula/bacula/bin/working
Maximum Concurrent Jobs = 20
}

Messages {
Name = Standard
director = Bacula-Director-1-dir = all, !skipped, !restored
}

Archivo bacula-sd.conf
Algunos tip's con respecto al "lenguaje" del archivo de configuración bacula-sd.conf:
Los password correspondientes deben respetar lo declarado en bacula-dir.conf 
 
Pasword de Storage

Director {
Name = Bacula-Director-1-dir
Password = "strgD1r3ct0r1"
 
Password de Console

Director {
Name = Bacula-Director-1-mon
Password = "D1r3ct0r1m0n"
Monitor = yes
}

El Device es el que indica donde se alojaran los volúmenes

Device {
Name = Storage-Raidubuntu
Media Type = File
Archive Device = /raid/backups/Raidubuntu
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}

Como ejemplo veremos el bacula-sd.conf del Bacula-Director-1,

bacula-sd.conf:
-----------------------------------------------------------------------------------
 
Storage {
Name = Bacula-Director-1-sd
SDPort = 9103
WorkingDirectory = /home/bacula/bacula/bin/working
Pid Directory = /home/bacula/bacula/bin/working
Maximum Concurrent Jobs = 20
}

Director {
Name = Bacula-Director-1-dir
Password = "strgD1r3ct0r1"
}

Director {
Name = Bacula-Director-1-mon
Password = "D1r3ct0r1m0n"
Monitor = yes

 
Device {
Name = Storage-Raidubuntu
Media Type = File
Archive Device = /raid/backups/Raidubuntu
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}

Messages {
Name = Standard
director = Bacula-Director-1-dir = all
}

Configuración de los Clientes en el Director

Este archivo es la configuracion de los clientes propiamentes dichos, de los cuales se van hacer el backup

Archivo Myself.conf
1.- Nota
El cliente del Director debe llamarse Myself.conf, el cual incluira:
     a.- Job de los archivos,
     b.- Job del Catalogo del Bacula (Base de datos)
     c.- Job para Restore de los Backups echos por este Director
2.- Cliente del Director
     a.- Clientes: Servers para hacer Backups

Lo que queremos definir son los rescursos del Pool para que reutilize despues de cierto tiempo los volumenes creados y asi el crecimiento de espacio en disco que tengamos no se nos acabe rapidamente.

Como veran estan calculados para guardar como maximo un mes de volumenes. Para este caso utilizaremos las plantillas definida en el Anexo "Plantillas de Clientes" donde debemos reemplazar los siguientes valores:

1.- Variables Generales:
Variables a cambiar
1.- Cambiar la palabra Server
2.- En Address = server.senasa.gov.ar
3.- En Password = "PPP"
4.- En Priority = nn
5.- En Schedule = HH:MM
6.- En Maximum Volumes = X
7.- En Volume Retention = DD days 
 
2.- Pool
Para guardar un histórico de Backups de 2 Semanas
Maximum Volumes = X
Pool --> Full --> Maximum Volumes = 2
Pool -->Diff --> Maximum Volumes = 2
Pool --> Inc --> Maximum Volumes = 8
Volume Retention = DD days
Pool --> Full --> Volume Retention = 10 days
Pool -->Diff --> Volume Retention = 10 days
Pool --> Inc --> Volume Retention = 10 days
Para guardar un histórico de Backups de 3 Semanas
Maximum Volumes
Pool --> Full --> Maximum Volumes = 3
Pool -->Diff --> Maximum Volumes = 3
Pool --> Inc --> Maximum Volumes = 12
Volume Retention = DD days
Pool --> Full --> Volume Retention = 14 days
Pool -->Diff --> Volume Retention = 14 days
Pool --> Inc --> Volume Retention = 14 days
Para guardar un histórico de Backups de 4 Semanas
Maximum Volumes
Pool --> Full --> Maximum Volumes = 4
Pool -->Diff --> Maximum Volumes = 4
Pool --> Inc --> Maximum Volumes = 15
Volume Retention = DD days
Pool --> Full --> Volume Retention = 20 days
Pool -->Diff --> Volume Retention = 20 days
Pool --> Inc --> Volume Retention = 20 days

Para guardar un histórico de Backups de Horarios
Maximum Volumes
Pool --> Full --> Maximum Volumes = 4
Pool -->Diff --> Maximum Volumes = 4
Pool --> Inc --> Maximum Volumes = 365
Volume Retention = DD days
Pool --> Full --> Volume Retention = 15 days
Pool -->Diff --> Volume Retention = 15 days
Pool --> Inc --> Volume Retention = 15 days 

Configuración de Bconsole y Bat

Pequeña introducción

El archivo de configuración para las consolas llevan los mismos parámetros 
 
Bat-->bat.conf 
bconsole ->;bconsole.conf

Archivo “.conf”

#
# Bacula User Agent (or Console) Configuration File
#
Director {
Name = Bacula-Director-1-dir
DIRport = 9101
address = baculadirector1.tudominio.com.ar
Password = "D1r3ct0r1"
}
Director {
Name = Bacula-Director-2-dir
DIRport = 9101
address = baculadirector2.tudominio.com.ar
Password = "D1r3ct0r2"
}
Director {
Name = Bacula-Director-3-dir
DIRport = 9101
address = baculadirector3.tudominio.com.ar
Password = "D1r3ct0r3"
}
Director {
Name = Bacula-Director-4-dir
DIRport = 9101
address = baculadirector4.tudominio.com.ar
Password = "D1r3ct0r4"

 

Administración de Bacula

Consola Bconsole: Ingresando a la consola

Para poder ejecutar al consola textual debemos tener en primer lugar instalado la consola de bacula (archivos: bconsole y bconsole.conf), esta se hace desde los mismo archivos de instalación de Bacula. 
 
Echo esto escribimos en nuestro prompt el comando bconsole y nos entregrar una pantalla de texto como la siguiente: 
 
---------------------------------------------------------
[root@smarcnet ~]# bconsole
Available Directors:
--> 1: Bacula-Director-1-dir at 111.11.111.111:9101
--> 2: Bacula-Director-2-dir at 111.11.111.112:9101
--> 3: Bacula-Director-3-dir at 111.11.111.113:9101
--> 4: Bacula-Director-4-dir at 111.11.111.114:9101
--> 5: Bacula-Director-5-dir at 111.11.111.115:9101
Select Director by entering a number: 1 <--
---------------------------------------------------------

Seleccionamos el director al cual queremos entrar, colocando el numero que se detalla a la izquierda y tienen una flecha, en el ejemplo de arriba seleccionamos el Bacula-Director-1 al cual entraremos una vez que presionemos el enter. 
 
Estando dentro de la consola podremos ejecutar comandos en la consola, pero antes una salvedad, el asteriscos que se encuentra al final del ejemplo siguiente es el prompt de la consola, lo que nos dice que ya podemos ejecutar algún comando.

---------------------------------------------------------
[root@smarcnet ~]# bconsole
Available Directors:
1: Bacula-Director-1-dir at 111.11.111.111:9101
2: Bacula-Director-2-dir at 111.11.111.112:9101
3: Bacula-Director-3-dir at 111.11.111.113:9101
4: Bacula-Director-4-dir at 111.11.111.114:9101
5: Bacula-Director-5-dir at 111.11.111.115:9101
Select Director by entering a number: 1
Connecting to Director 111.11.111.111:9101
1000 OK: Bacula-Director-1-dir Versión: 5.0.3 (04 August 2010)
Enter a period to cancel a command.
--------------------------------------------------------- 
 
Comandos útiles de la consola

Detallo algunos de los comandos que mas se utilizan para la administración:

help: Muestra la lista de comandos que se pueden correr por consola  

*help

Command Description
======= ===========
add             Add media to a pool
autodisplay     Autodisplay console messages
automount       Automount after label
cancel          Cancel a job
create          Create DB Pool from resource
delete          Delete volume, pool or job
disable         Disable a job
enable          Enable a job
estimate        Performs FileSet estimate, listing gives                         full listing
exit            Terminate Bconsole session
gui             Non-interactive gui mode
.........

status: Este comando tiene varias formas de emplearse 

a.- Ejecutando simplemtente "status" y nos muestra la siguiente pantalla: 

*status
Status available for:
1: Director
2: Storage
3: Client
4: All
Select daemon type for status (1-4): 1 
 
Ahora intentaremos comprender que nos muestra el comando status:

Director: Muestra los backups que se realizaran, si estan corriendo algún Job y los realizados : Backups a Realizar: 
 
Scheduled Jobs:
Level Type Pri Scheduled Name Volume =====================================================================================
Incremental Backup 5 18-abr-11 23:05 Backup-Mail Mail-Inc-0408
Incremental Backup 15 18-abr-11 23:15 Backup-Gta Gta-Inc-0410
Incremental Backup 20 18-abr-11 23:20 Backup-Gtc
Incremental Backup 20 18-abr-11 23:25 Backup-Gte Gte-Inc-0412
Full Backup 35 18-abr-11 23:35 Backup-Mesayuda Mesayuda-Full-0004
--------------------------------------------------------------------------------------------------------------------------------------------------
Jobs Corriendo:
Running Jobs:
Console connected at 18-abr-11 16:08
No Jobs running.
====
Backups realizados :
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
==================================================================================
669 Incr 105 1.901 G OK 16-abr-11 00:29 Backup-Bacula-Director-1
670 Full 1 2.473 G OK 16-abr-11 00:33 Backup-Catalog-Bacula-Director-1
671 Full 3,386 138.9 G OK 17-abr-11 17:39 Backup-Mail
673 Full 1,057 319.2 G OK 18-abr-11 04:14 Backup-Gta
674 Full 3206 50.19 G OK 18-abr-11 05:57 Backup-Gtc
=================================================================================
Storage : Muestra el Storage o los múltiples storage configurados 
 
Caso único storage: 
 
Cuando en el Director solo tenemos definido un solo storage nos muestra directamente el log con la información siguiente: 
 
Este caso es cuando no tiene ningún proceso esta ejecutándose, pero en caso contrario donde dice "Running Jobs" y "Used Volume status" nos muestra que jobs y volumen esta usando. 
*status storage
The defined Storage resources are:
1: Strg-Bacula-Director-5
2: Strg-Bacula-Director-5-Horario
Select Storage resource (1-2): 1
Connecting to Storage daemon Strg-Bacula-Director-5 at 172.26.160.102:9103
Bacula-Director-5-sd Versión: 5.0.3 (04 August 2010) x86_64-unknown-linux-gnu redhat
Daemon started 20-abr-11 20:40. Jobs: run=8, running=0.
Heap: heap=471,040 smbytes=298,987 max_bytes=367,203 bufs=122 max_bufs=139
Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8

Running Jobs:
Writing: Full Backup job Backup-BH1-Horario JobId=40 Volume="BH1-Horario-Inc-0011"
pool="BH1-Horario-Inc" device="Strg-Storage-BD5-Horario" (/raid/Horario)
spooling=0 despooling=0 despool_wait=0
Files=25 Bytes=388,632,042 Bytes/sec=2,034,722
FDReadSeqNo=6,134 in_msg=6060 out_msg=5 fd=8
====
Jobs waiting to reserve a drive:
====
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
==================================================================================
31 Full 0 0 Cancel 20-abr-11 20:40 Backup-BH1-Horario
33 Full 0 0 Cancel 20-abr-11 20:40 Backup-BH1-Horario
35 Full 904 15.07 G Cancel 20-abr-11 22:42 Backup-BH1-Horario
====
Device status:
Device "Strg-Storage-BD5" (/raid) is not open.
Device "Strg-Storage-BD5-Horario" (/raid/Horario) is mounted with:
Volume: BH1-Horario-Inc-0011
Pool: BH1-Horario-Inc
Media type: File
Total Bytes=388,878,545 Blocks=6,028 Bytes/block=64,512
Positioned at File=0 Block=388,878,544
====
Used Volume status:
BH1-Horario-Inc-0011 on device "Strg-Storage-BD5-Horario" (/raid/Horario)
Reader=0 writers=1 devres=0 volinuse=1
====


Cancelando un Job en ejecución desde consola

Para cancelar Job en ejecucion, no podremos hacerlo solo del comando cancel, debemos indicar el jobid que tiene ese proceso.

Para saber el JobId, lo podremos ejecutar de la siguiente manera:

# status client

Seleccionamos el cliente desde la lista y de ahi sacamos el jobid que se esta ejecutando

Y luego tipeamos:

cancel jobid=XXXX 

Recontruccion del catalogo con bscan

El comando bscan nos permite reconstruir el catalogo teniendo los volumenes  esto se ejecuta de la siguiente forma


 bscan -V Mail-Storage-Full-0018 -v -s -m -c bacula-sd.conf /raid/ -u bacula -Pmysql2011 -n bacula







-v es de verbose 
-s sincronisa el volumen con la base de datos (catalogo) 
-m updatea la informacion de media en la base de datos 
-c el archivo de configuracion que utilizamos en este caso bacula-sd,conf

hay que colocar -u. -P y -n para la conexion a la base.  Luego comiensa a mostrar el siguiente log: 

bscan: butil.c:287 Using device: "/raid/" for reading.
15-jul 10:22 bscan JobId 0: Ready to read from volume "Mail-Storage-Full-0018" on device "Strgkub" (/raid/).
bscan: bscan.c:309 Using Database: bacula, User: bacula
bscan: bscan.c:456 Pool record for Mail-Storage-Full found in DB.
bscan: bscan.c:470 Pool type "Backup" is OK.
bscan: bscan.c:985 Created Media record for Volume: Mail-Storage-Full-0018
bscan: bscan.c:498 Media type "File" is OK.
bscan: bscan.c:508 VOL_LABEL: OK for Volume: Mail-Storage-Full-0018
bscan: bscan.c:1056 Created Client record for Client: Mail-Storage-fd
bscan: bscan.c:1139 Created new JobId=48980 record for original JobId=1452
bscan: bscan.c:705 32,768 file records. At file:blk=0:3,366,816,801 bytes=3,364,880,205
bscan: bscan.c:705 65,536 file records. At file:blk=1:2,018,950,994 bytes=6,310,343,465
bscan: bscan.c:705 98,304 file records. At file:blk=2:879,717,001 bytes=9,464,333,811
.......




Problemas Generales

1°.- Desfasaje de Horario

Como suele defasarse el horario de los baculas servidores, ejecutamos el comando detallado :

ntpdate ntp.senasa.gov.ar (Para los Baculas de casa central)
ntpdate dsdcenter.senasa.gov.ar (Para los  Baculas de Telecom
)


Ya que si el desfasa es importante retrasa considerablemente el incio del backup


2°.- Problemas en los bacukps por defasaje de fecha en el vencimiento del volumen

Chequear diariamente los baculas con el Bat console, si encuentra algun job con la siguiente exprecion proceder como se describe en el mail anterior y que nuevamente detallo en este mail

29-ene 11:08 Kurchatovio-dir JobId 1915: Pruning oldest volume "BH1-Horario-Full-0212"

29-ene 11:13 Kurchatovio-dir JobId 1915: Pruning oldest volume "BH1-Horario-Full-0212"

bconsole

list Pool=BH1-Horario-Full media 


esto le va a mostrar el ultimo full de BH1-Horario osea van a ver BH1-Horario-Full-0212 entonces una vez obtenido el ultimo numero hacen
 

label

En este caso deben seleccionar el storage Horario y luego colocar el nombre del nuevo volumen que seria BH1-Horario-Full-0213

3°.- Problemas con Jobs (Exceptuando problemas de vencimiento del volumen)

Si los backups se traban, al ejecutar el comando storage status, nos muestra el siguiente textos:

bconsole
 *status storage
 The defined Storage resources are:
      1: Strg-kurchatovio
      2: Strg-kurchatovio-Horario
 Select Storage resource (1-2): 1

 Connecting to Storage daemon Strg-kurchatovio at
111.11.111.115:9103

 Bacula-Teco-1-sd Version: 5.2.5 (26 January 2012) x86_64-pc-linux-gnu ubuntu 12.04
 Daemon started 22-Jan-13 11:32. Jobs: run=309, running=0.
  Heap: heap=270,336 smbytes=235,214 max_bytes=366,889 bufs=115 max_bufs=127
  Sizes: boffset_t=8 size_t=8 int32_t=4 int64_t=8 mode=0,0

 Running Jobs:
 Writing: Incremental Backup job Job-PGSQL-Horario JobId=12859 Volume=""
     pool="PGSQL-Horario-Inc" device="Strgkub-Horario" (/raid/Horario)
     spooling=0 despooling=0 despool_wait=0
     Files=0 Bytes=0 Bytes/sec=0
     FDReadSeqNo=6 in_msg=6 out_msg=4 fd=5
 ====

 Jobs waiting to reserve a drive:
 ====

 Terminated Jobs:
  JobId  Level    Files      Bytes   Status   Finished        Name

===================================================================
12810  Incr          5    67.10 M  OK       28-Jan-13 13:23 Job-BH1-Horario
  12812  Incr         48    771.7 M  OK       29-Jan-13 09:39 Job-BH1-Horario
  12814  Incr         47    754.9 M  OK       29-Jan-13 09:53 Job-BH1-Horario
  12811  Incr         68    168.0 M  OK       29-Jan-13 09:55 Job-PGSQL-Horario
  12813  Incr         68    168.0 M  OK       29-Jan-13 09:57 Job-PGSQL-Horario
  12834  Incr         69    376.9 K  OK       29-Jan-13 09:57 Backup-Bacula-Teco
  12835  Full          1    14.39 M  OK       29-Jan-13 09:58 Backup-Bacula-Teco-Catalog
  12856  Incr          3    33.55 M  OK       29-Jan-13 10:15 Job-BH1-Horario
  12857  Incr          2    2.178 M  OK       29-Jan-13 10:25 Job-PGSQL-Horario
  12858  Incr          3    33.55 M  OK       29-Jan-13 11:15 Job-BH1-Horario
 ====

 Device status:
 Device "Strgkub" (/raid) is not open.
 Device "Strgkub-Horario" (/raid/Horario) is not open.
     Device is BLOCKED waiting to create a volume for:
        Pool:        PGSQL-Horario-Inc
        Media type:  File
 ====

 Used Volume status:
 ====

 ====

 You have messages.
 *


 En el texto detallado lo que nos interesa son dos items:

 Running Jobs: (Al principio del texto)
 Writing: Incremental Backup job Job-PGSQL-Horario JobId=12859 Volume=""
     pool="PGSQL-Horario-Inc" device="Strgkub-Horario" (/raid/Horario)
     spooling=0 despooling=0 despool_wait=0
     Files=0 Bytes=0 Bytes/sec=0
     FDReadSeqNo=6 in_msg=6 out_msg=4 fd=5
 ====

 Device "Strgkub" (/raid) is not open. (Al final del texto)
 Device "Strgkub-Horario" (/raid/Horario) is not open.
     Device is BLOCKED waiting to create a volume for:
        Pool:        PGSQL-Horario-Inc
        Media type:  File
 ====

 

Este caso se soluciona creando un nuevo label, pero si tenemos este otro caso:

 Running Jobs: (Al principio del texto)
 Writing: Incremental Backup job Job-PGSQL-Horario JobId=12859 Volume=""
     pool="PGSQL-Horario-Inc" device="Strgkub-Horario" (/raid/Horario)
     spooling=0 despooling=0 despool_wait=0
     Files=0 Bytes=0 Bytes/sec=0
     FDReadSeqNo=6 in_msg=6 out_msg=4 fd=5
 ====
 Writing: Incremental Backup job Job-PGSQL-Horario JobId=12860 Volume=""
     pool="PGSQL-Horario-Inc" device="Strgkub-Horario" (/raid/Horario)
     spooling=0 despooling=0 despool_wait=0
     Files=0 Bytes=0 Bytes/sec=0
     FDReadSeqNo=6 in_msg=6 out_msg=4 fd=5
 ====

 Device "Strgkub" (/raid) is not open. (Al final del texto)
 Device "Strgkub-Horario" (/raid/Horario) is not open.
     Device is BLOCKED waiting to create a volume for:
        Pool:        PGSQL-Horario-Inc
        Media type:  File
 ====


Esto se soluciona con el siguiente comando :

service bacula-sd force-reload

si esto no lo soluciona, solo en casos extremos reiniciar el servicio de bacula de la siguiente forma

 1° Bajar el bacula-fd: service bacula-fd stop
 2° Bajar el bacula-sd: service bacula-sd stop
 3° Bajar el bacula-director: service bacula-director stop


 Y luego ejecutar con la misma secuencia el inicio

 1° Subir el bacula-fd: service bacula-fd start
 2° Subir el bacula-sd: service bacula-sd start
 3° Subir el bacula-director: service bacula-director start


Creación de un nuevo label:


Entramos a la consola de bacula

[claudio@smarcnet ~]$ bconsole

Ejecutamos el siguiente comando para obtener el ultimo volumen generado del Pool en cuestion (Webmail-Inc)

*list Pool=Webmail-Inc media 

| PoolId | Name             | NumVols | MaxVols | PoolType | LabelFormat       |
+--------+------------------+---------+---------+----------+-------------------+


 2,160,000 |       1 |    0 |         0 | File      | 2013-10-25 10:23:57 |
|     573 | Webmail-Inc-0573 | Full      |       1 |   1,613,008 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-10-25 10:24:33 |
|     574 | Webmail-Inc-0574 | Full      |       1 |   1,548,496 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-10-25 10:25:07 |
|     580 | Webmail-Inc-0575 | Used      |       1 | 206,137,219 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-10-29 17:26:44 |


Creamos el label nuevo teniendo de la siguiente manera

*label storage=Strg-kurchatovio volume=Webmail-Inc-0576 pool=Webmail-Inc

|     580 | Webmail-Inc-0575 | Used      |       1 | 206,137,219 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-10-29 17:26:44 |

|     587 | Webmail-Inc-0576 | Used      |       1 | 253,564,801 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-10-31 13:20:29 |
+---------+------------------+-----------+---------+-------------+----------+---

 
Opcion 2:

[claudio@smarcnet ~]$ bconsole
Available Directors:
 1:  Bacula-Central-1-dir at
111.11.111.111:9101
 2:  Bacula-Director-2-dir at
111.11.111.112:9101
 3:  Bacula-Director-3-dir at
111.11.111.113:9101
 4:  Bacula-Director-4-dir at
111.11.111.114:9101
 5:  BDPGSQL-dir at
111.11.111.115:9101
Select Director by entering a number: 5
Connecting to Director
111.11.111.115:9101
1000 OK: Kurchatovio-dir Version: 5.2.5 (26 January 2012)
Enter a period to cancel a command.

*mess
29-ene 11:18 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:23 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:28 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:33 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:38 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:43 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:48 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
29-ene 11:53 Kurchatovio-dir JobId 1915: Pruning oldest volume "Blade-Hoja13-Inc-0102"
*
*list Pool=Blade-Hoja13-Inc media

Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
+--------+------------------+---------+---------+----------+-------------------+
| PoolId | Name             | NumVols | MaxVols | PoolType | LabelFormat       |
+--------+------------------+---------+---------+----------+-------------------+
|     35 | Blade-Hoja13-Inc |      16 |      16 | Backup   | Blade-Hoja13-Inc- |
+--------+------------------+---------+---------+----------+-------------------+
+---------+-----------------------+-----------+---------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
| MediaId | VolumeName            | VolStatus | Enabled | VolBytes    | VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten         |
+---------+-----------------------+-----------+---------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
|     582 | Blade-Hoja13-Inc-0582 | Used      |       1 | 101,926,179 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-01-15 12:15:04 |
|     583 | Blade-Hoja13-Inc-0583 | Used      |       1 | 138,136,375 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-01-15 12:29:44 |
|     597 | Blade-Hoja13-Inc-0597 | Used      |       1 |  48,774,324 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-01-16 08:52:22 |
|     626 | Blade-Hoja13-Inc-0626 | Used      |       1 |  55,392,521 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-01-18 12:04:28 |
|     678 | Blade-Hoja13-Inc-0678 | Used      |       1 |  59,325,952 |        0 |    2,160,000 |       1 |    0 |         0 | File      | 2013-01-27 17:55:50 |
+---------+-----------------------+-----------+---------+-------------+----------+--------------+---------+------+-----------+-----------+---------------------+
*
*label
Automatically selected Storage: Strg-Kurchatovio
Enter new Volume name: Blade-Hoja13-Inc-0679
Defined Pools:
     1: Bacula-Teco-Full
     2: Bacula-Teco-Diff
     3: Bacula-Teco-Inc
     4: Bacula-Teco-Catalog-Full
     5: Default
     6: Foton-Full
     7: Foton-Diff
     8: Foton-Inc
     .......


    32: Blade-Hoja12-Inc
    33: Blade-Hoja13-Full
    34: Blade-Hoja13-Diff
    35: Blade-Hoja13-Inc

Select the Pool (1-134): 35

Connecting to Storage daemon Strg-Kurchatovio at
111.11.111.115:9103 ...
Sending label command for Volume "Blade-Hoja13-Inc-0679" Slot 0 ...
3000 OK label. VolBytes=240 DVD=0 Volume="Blade-Hoja13-Inc-0679" Device="Storage-Kurchatovio" (/raid/Kurchatovio)
Catalog record for Volume "Blade-Hoja13-Inc-0679", Slot 0  successfully created.
Requesting to mount Storage-Kurchatovio ...
3001 OK mount requested. Device="Storage-Kurchatovio" (/raid/Kurchatovio)
*


Casos no exitosos

Ejemplo 1

*label
Automatically selected Storage: Strg-Kurchatovio
Enter new Volume name: Blade-Hoja13-Inc-0679
Media record for new Volume "Blade-Hoja13-Inc-0679" already exists.



Ejemplo 2

Volume name must be at least one character long.
Enter new Volume name: Blade-Hoja13-Inc-0680
Defined Pools:
     1: Bacula-Teco-Full
     2: Bacula-Teco-Diff
     3: Bacula-Teco-Inc
     4: Bacula-Teco-Catalog-Full
     5: Default
     6: Foton-Full
     7: Foton-Diff
     8: Foton-Inc
     ......
    

    33: Blade-Hoja13-Full
    34: Blade-Hoja13-Diff
    35: Blade-Hoja13-Inc

Select the Pool (1-134): 35
Connecting to Storage daemon Strg-Kurchatovio at
111.11.111.115:9103 ...
Sending label command for Volume "Blade-Hoja13-Inc-0680" Slot 0 ...
3937 Device ""Storage-Kurchatovio" (/raid/Kurchatovio)" is busy with writers=1 reserved=0.
Label command failed for Volume Blade-Hoja13-Inc-0680.
Do not forget to mount the drive!!!
*


4°.-  Fatal error: Can't fill Pathtable Query failed

Antes de implementar alguna solucion para el correcto funcionamiento hacemos un dump de la base como backup de la siguiente forma:

mysqldump --opt -u root -p password bacula > bacula.sql (colocar el password, dejar hasta que devuelva el prompt)

Error que se genero:

18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "FSRM
Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:21 raidebian-sd JobId 4359: Job write elapsed time = 00:34:58,
Transfer rate = 2.925 M bytes/second
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete):
"System Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "IISMetabase Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "FRSWriter", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "DFSReplication service writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "BITSWriter", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "WMIWriter", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "EventLog Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete):"MSDEWriter", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete):"Registry Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:23 sdcfile1-fd JobId 4359: VSS Writer (BackupComplete): "COM+REGDB Writer", State: 0x1 (VSS_WS_STABLE)
18-may 12:21 raidebian-dir JobId 4359: Fatal error: Can't fill Pathtable Query failed: INSERT INTO Path (Path) SELECT a.Path FROM (SELECTDISTINCT Path FROM batch) AS a WHERE NOT EXISTS (SELECT Path FROM PathAS p WHERE p.Path = a.Path): ERR=Incorrect key file for table'/tmp/#sql_7c03_1.MYI'; try to repair it

18-may 12:21 raidebian-dir JobId 4359: Error: Bacula raidebian-dir 2.2.8
(26Jan08): 18-may-2009 12:21:51
Build OS: i486-pc-linux-gnu debian lenny/sid
JobId: 4359Job: Backup-sdcfile1.2009-05-18_11.46.42
Backup Level: Incremental, since=2009-05-06 23:00:03
Client: "sdcfile1-fd" 2.4.3 (10Oct08) Linux,Cross-compile,Win32
FileSet: "sdcfile1FileSet" 2008-11-26 23:00:00
Pool: "sdcfile1-Inc-Pool" (From User input)
Storage: "raidebian-sd" (From Job resource)
Scheduled time: 18-may-2009 11:46:35
Start time: 18-may-2009 11:46:53
End time: 18-may-2009 12:21:51
Elapsed time: 34 mins 58 secs
Priority: 5FD Files Written: 5,068SD Files Written: 5,068
FD Bytes Written: 6,136,839,297 (6.136 GB)
SD Bytes Written: 6,137,878,056 (6.137 GB)
Rate: 2925.1 KB/sSoftware Compression: 24.2 %
VSS: yesStorage Encryption: noVolume name(s): sdcfile1-Inc-0205
Volume Session Id: 38Volume Session Time: 1242412747
Last Volume Bytes: 16,016,990,585 (16.01 GB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: O
KSD termination status: O
KTermination: *** Backup Error ***
18-may 12:21 raidebian-dir JobId 4359: Begin pruning Jobs.
18-may 12:21 raidebian-dir JobId 4359: No Jobs found to prune.
18-may 12:21 raidebian-dir JobId 4359: Begin pruning Files.
18-may 12:21 raidebian-dir JobId 4359: No Files found to prune.
18-may 12:21 raidebian-dir JobId 4359: End auto prune.

Este error se genero por falta de espacio principalmente, pero ademas el archivo de configuracion del Mysql, osea, my.cnf (/etc/mysql/) tenia la variable tmpdir apuntando al directorio /tmp el cual tiene poco espacio y el archivo temporario #sql_7c03_1.MYI', que genera, crecio en forma desproporcionada, lo que se hizo es cambiar a /var/tmp.

Si en otra ocasion no funciona, debemos borrar el indice que corresponde en este caso a la tabla Path de esta forma:

alter table Path drop index Path;

Luego volvemos a crearlo tal cual esta escrito:

alter table Path add index Path (`Path`(255));

Para poder ver que Keys tiene debemos hacer lo siguiente:

show create tables Path;

Hecho esto reiniciamos el mysql server y en teoría debería andar.

5°.- Repara error en Tabla Log

Query failed: .sql query="SELECT Time, LogText FROM Log WHERE JobId='3510' order by Time". ERR=Query failed: SELECT Time, LogText FROM Log WHERE JobId='3510' order by Time: ERR=Table './bacula/Log' is marked as crashed and should be repaired   

[root@Bacula-Director-3/]# mysqlcheck -h baculadirector3.tudominio.com.ar -u usuariomysql -p -o bacula 

bacula.BaseFiles OK
bacula.CDImages OK
bacula.Client OK
bacula.Counters OK
bacula.Device OK
bacula.File OK
bacula.FileSet OK
bacula.Filename OK
bacula.Job OK
bacula.JobHisto OK
bacula.JobMedia OK
bacula.Location OK
bacula.LocationLog OK
bacula.Log Error: Table './bacula/Log' is marked as crashed and should be repaired
Error: Table 'Log' is marked as crashed and should be repaired
error: Corrupt
bacula.Media OK
bacula.MediaType OK
bacula.Path OK
bacula.PathHierarchy OK
bacula.PathVisibility OK
bacula.Pool OK
bacula.Status OK
bacula.Storage OK
bacula.UnsavedFiles OK
bacula.Version OK

repair table Log;

+------------+--------+----------+------------------------------------------------------+
|Table | Op | Msg_type | Msg_text |
+------------+--------+----------+------------------------------------------------------+
|bacula.Log | repair | info | Found block that points outside data file at 1019032 |
|bacula.Log | repair | status | OK
+------------+--------+----------+------------------------------------------------------+
2 rows in set (0.27 sec)
There were no results!
It is possible you may need to add "catalog = all" to the Messages resource for this job.
Cancele el Job y reinicie el bacula-director, bacula-sd y el mysql, el error desaparecio, muestra directamente el log del Job cancelado. Desde consola restarteo el Job Cancelado  
run job="Job-Gth" client="Gth-fd" level=Incremental fileset="Gth-FileSet" 

6.-  Error de Permisos denied

28-Feb 14:50 Kurchatovio-dir: Warning: Cannot bind port 9101: ERR=Cannot assign requested address: Retrying ...
28-Feb 14:52 Kurchatovio-dir: Warning: Cannot bind port 9101: ERR=Cannot assign requested address: Retrying ...
28-Feb 14:54 Kurchatovio-dir: ERROR in parse_conf.c:918 Config error: Cannot open config file "/etc/bacula/bacula-dir.conf": Permission denied 
 
Este error en particular se produce cuando el director en el archivo bacula-dir.conf tiene el DirAddres mal o la password mal.
Para solucionarlo chequeamos que el IP del servidor sea el mismo IP que tiene el Director, o que el Filedaemon (FD) tenga el password correcto del director.

7.- Proceso de Job Trabado

Cuando en Bat console vemos que el job que esta corriendo presenta este aspecto:

BDPGSQL-dir Start Backup JobId 2289, Job=Job-Senasa-Archivos2.2013-04-15_23.00.00_09

Lo que usualmente hago es reiniciar el daemon del storage para que reactive, si bien este proceso se pierde, lo demas que estan en cola continuan y obtendremos del proceso trabado generalmente el siguiente log:

BDPGSQL-dir Start Backup JobId 2289, Job=Job-Senasa-Archivos2.2013-04-15_23.00.00_09BDPGSQL-dir Job Job-Senasa-Archivos2.2013-04-15_23.00.00_09 waiting 3600 seconds for scheduled start time.
Rescheduled Job Job-Senasa-Archivos2.2013-04-15_23.00.00_09 at 16-abr-2013 11:43 to re-run in 3600 seconds (16-abr-2013 12:43).
Error: Bacula BDPGSQL-dir 5.0.2 (28Apr10): 16-abr-2013 11:43:57
Build OS: x86_64-pc-linux-gnu debian 6.0.6
JobId: 2289
Job: Job-Senasa-Archivos2.2013-04-15_23.00.00_09
Backup Level: Incremental, since=2013-04-07 14:29:45
Client: "Archivos2-fd" 5.2.5 (26Jan12) Microsoft Windows Server 2008 Standard Edition Service Pack 1 (build 6001), 32-bit,Cross-compile,Win32
FileSet: "FileSet-Archivos2-Senasa" 2012-10-15 01:30:00
Pool: "Archivos2-Senasa-Inc" (From Run pool override)
Catalog: "MyCatalog" (From Client resource)
Storage: "Strg-FreeNas-BDPGSQL" (From run override)
Scheduled time: 15-abr-2013 23:00:00
Start time: 15-abr-2013 23:00:02
End time: 16-abr-2013 11:43:57
Elapsed time: 12 hours 43 mins 55 secs
Priority: 10
FD Files Written: 0
SD Files Written: 0
FD Bytes Written: 0 (0 B)
SD Bytes Written: 0 (0 B)
Rate: 0.0 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s):
Volume Session Id: 91
Volume Session Time: 1363197140
Last Volume Bytes: 0 (0 B)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status:
SD termination status:
Termination: *** Backup Error ***
Fatal error:
Storage daemon didn't accept Device "Storage-FreeNas-BDPGSQL" command.

9.- Comprobar Database de Bacula.
Dbcheck es un sencillo programa que buscará las inconsistencias lógicas en las tablas de Bacula en su base de datos y, opcionalmente, arreglarlos. Es una rutina de mantenimiento de base de datos, en el sentido de que puede detectar y eliminar filas no utilizadas, pero no es una rutina de reparación de base de datos.

Uso: dbcheck [-c config] [-C catalog name] [-d debug_level]
-b batch mode
-C catalog name in the director conf file
-c director conf filename
-B print catalog configuration and exit
-dnn set debug level to nn
-dt print timestamp in debug output
-f fix inconsistencies
-v verbose
-? print this message

Ejemplo

root@bacula-dir:~# dbcheck /etc/bacula/bacula-dir.conf bacula bacula password

[-c config] = /etc/bacula/bacula-dir.conf
[-C catalog name] = bacula

En el menu 1 se utiliza para la comprobacion del estado general de la base, esta se lleva acabo con la seleccion de la opcion 16

Menu 1

1) Activar bandera modificar base de datos
2) Activar bandera detallado
3) Verificar malos registros de Nombre de Archivo
4) Verificar malos registros de Rutas
5) Verificar registros de Nombre de Archivo duplicados
6) Verificar registros de Rutas duplicados
7) Verificar registros de Jobmedia huérfanos
8) Verificar registros de Archivo huérfanos
9) Verificar registros de Rutas huérfanos
10) Verificar registros de nombre de archivo huérfanos
11) Verificar registros de FileSet huérfanos
12) Verificar registros de Cliente huérfanos
13) Verificar registros de Job huérfanos
14) Verificar todos los registros de Administración
15) Verificar todos los registros de Restauración
16) Todos (3-15)
17) Salir

El menu 2 se activa una vez que hallamos verificado la base, y presionaremos la opcion 1 y luego la opcion 16 que ejecuta los items del 3-15

Menu 2
1) Activar bandera modificar base de datos
2) Activar bandera detallado
3) Reparar malos registros de Nombre de Archivo
4) Reparar malos registros de Rutas
5) Eliminar registros de Nombre de Archivo duplicados
6) Eliminar registros de Rutas duplicados
7) Eliminar registros de Jobmedia huérfanos
8) Eliminar registros de Archivo huérfanos
9) Eliminar registros de Rutas huérfanos
10) Eliminar registros de nombre de archivo huérfanos
11) Eliminar registros de FileSet huérfanos
12) Eliminar registros de Cliente huérfanos
13) Eliminar registros de Job huérfanos
14) Eliminar todos los registros de Administración
15) Eliminar todos los registros de Restauración
16) Todos (3-15)
17) Salir

10.- Fatal error: Device reservation failed

Este error se produce cuando tenemos en el bacula-sd.conf un nombre de Device distinto al declarado en bacula-dir.conf

Bacula-Director-2-dir Start Backup JobId 6428, Job=Job-Nagios.2013-04-25_23.50.00_24
Bacula-Director-2-sd Fatal error: Device reservation failed for JobId=6428:
Bacula-Director-2-dir Fatal error:
Storage daemon didn't accept Device "Storage-FreeNas-1-BD2" because:
3924 Device "Storage-FreeNas-1-BD2" not in SD Device resources.

Error: Bacula Bacula-Director-2-dir 5.0.2 (28Apr10): 25-abr-2013 23:50:02
Build OS: x86_64-pc-linux-gnu debian 6.0.6
JobId: 6428
Job: Job-Nagios.2013-04-25_23.50.00_24
Backup Level: Incremental, since=2013-04-23 00:42:40
Client: "Nagios-fd" 5.0.1 (24Feb10) i486-pc-linux-gnu,ubuntu,10.04
FileSet: "FileSet-Nagios" 2012-11-07 23:50:00
Pool: "Nagios-Inc" (From Run pool override)
Catalog: "MyCatalog" (From Client resource)
Storage: "Strg-FreeNas-BD2" (From run override)
Scheduled time: 25-abr-2013 23:50:00
Start time: 25-abr-2013 23:50:02
End time: 25-abr-2013 23:50:02
Elapsed time: 0 secs
Priority: 50
FD Files Written: 0
SD Files Written: 0
FD Bytes Written: 0 (0 B)
SD Bytes Written: 0 (0 B)
Rate: 0.0 KB/s
Software Compression: None
VSS: no
Encryption: no
Accurate: no
Volume name(s):
Volume Session Id: 29
Volume Session Time: 1366832921
Last Volume Bytes: 0 (0 B)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status:
SD termination status:
Termination: *** Backup Error ***

11.-  Error: VSS API failure calling "BackupComplete"

Este problema lo solucione de dos maneras uno entrando al cliente y pasando de manual a automatico no iniciado al servicio de Instantanea de Volumen
la otra forma es instalando la libreria libshadow en ubuntu

BDPGSQL-dir Start Backup JobId 3834, Job=Job-Senasa-Archivos2.2014-04-07_23.00.00_36
BDPGSQL-dir Using Device "Storage-FreeNas-BDPGSQL"
 Recycled volume "Archivos2-Senasa-Inc-0186"
 All records pruned from Volume "Archivos2-Senasa-Inc-0186"; marking it "Purged"
 There are no more Jobs associated with Volume "Archivos2-Senasa-Inc-0186". Marking it purged.
BDPGSQL-dir Max Volume jobs exceeded. Marking Volume "Archivos2-Senasa-Inc-0186" as Used.
BDPGSQL-sd Recycled volume "Archivos2-Senasa-Inc-0186" on device "Storage-FreeNas-BDPGSQL" (/raid), all previous data lost.
Archivos3-fd Generate VSS snapshots. Driver="Win64 VSS", Drive(s)="D"
Archivos3-fd Fatal error: CreateSGenerate VSS snapshots failed. ERR=La operaci�n se complet� correctamente.
Archivos3-fd
Error: VSS API failure calling "BackupComplete". ERR=Object is not initialized; called during restore or not called in correct sequence.

12.- Error por migración a Ubuntu 14.04

Pase mi ubuntu 12.04 a 14.04 actualizandolo en modo online (Chicos eso no se hace !!) y tome la precaucion de hacer el dump de la base del bacula !
Me encuentro que estaba el mysql server 5.6 y lo actualize !!! Error !!! No anda el Bacula 5.2.6 con mysql server 5.6 (al menos yo no lo puede hacer andar) y tuve que hacer un downgrade a mysql 5.5, en ese interir se me descompagino todos los permisos de los directorios de bacula, por tocar con mis manos magicas !!!.

Por lo tanto hice borron y cuenta nueva, total tenia mi amado dump !! Instalo desde cero el mysql y el bacula ejecuto mi dump !!! reincio el servidor !! y me encuentro que el director no levanta !! chequeo mis password de SD FD y DIR y todo estaba correcto !! Los permisos de la carpeta bacula en /var/lib/bacula eran los correctos y empece mi derrotero para encontra la solucion !! ya que tenia mis backups a la deriba !! Hasta que ejecute :

bacula-dir -t -c /etc/bacula/bacula-dir.conf el cual me dijo que la version de bacula no coincidia con la version en la tabla Version.VersionId

Paso seguido chequeo desde mysql el dato que tenia en la tabla Version y decia 12 en el bacula que no andaba, y como tenengo 8 directores mas a los cuales cuando migre a ubuntu 14.04 lo habia echo como corresponde !! Reinstalando el sistema operativo desde Cero !! Me funcionaban correctamente !! por lo que chequeo en uno de ellos y veo que dice en Version.VersionId=14, entonces perdido por perdido update el dato y salio andando !!!

update Version set VersionId='14' where VersionId='12';