Jobs de Cópia e Migração

Jobs de Cópia e Migração

Os Jobs de cópia e migração (copy e migration) do Bacula são ótimos para mover dados de backup de hardware de armazenamento antigo para novos, executar backups disk-to-disk-to-tapes (disco para disco para fitas) ou implementar um segundo armazenamento off-site.

A cópia e migração acontecem no nível de granularidade de Job, desta forma o tamanho da fita ou mídia de origem ou destino não é importante. Os Jobs a serem copiados de um Pool (e Storage) Bacula de origem devem ser selecionadas a partir de alguns critérios definidos e são armazenadas em uma Pool (e Storage) de destino.

A diferença entre os jobs de cópia e migração é que o Bacula descarta os Jobs gravados da Pool de origem no caso da migração.

Quando o backup original de um Job copiado é reciclado ou excluído por algum motivo, o Bacula selecionará automaticamente a cópia para fazer uma restauração de um cliente naquele determinado momento, se solicitado.

Os trabalhos de cópia e migração não requerem conexão com os Clientes do Bacula. Isso geralmente significa que ele pode ser executado durante o dia, sem risco de impacto nos demais serviços.

O escopo de seleção dos Jobs para a cópia, pode ser:

  • um ou vários Jobs de backup configurados;
  • um ou vários Volumes, pelo nome.
  • Jobs de um cliente, pelo nome.
  • Jobs realizados que correspondam a uma expressão regular;
  • se um trabalho existe em um determinado volume;
  • volumes com o somatório de ocupação em uma Pool inferior ou superior a um dado valor;
  • tamanho do volume.

Em um resumo, para executar um Job de cópia ou migração, você deve definir um recurso Job especial em bacula-dir.conf com a diretiva Type igual a Copy ou Migrate; a especificação de uma Pool origem; e, pelo menos, mas não menos importante, um dos SelectionType (e muitas vezes SelectionPattern) que define os critérios de seleção capazes de encontrar Jobs para serem copiados.

Nos recursos Pool (ainda em bacula-dir.conf), você deve especificar na Pool de origem a diretiva Storage (o mesmo nos quais seus volumes já estão sendo gravados, que também será a origem da cópia), além da diretiva NextPool, que deve informar o nome de outra Pool de destino da cópia. Por fim, no recurso da Pool de Destino, também deve ser especificado uma diretiva Storage para um dispositivo de armazenamento diferente, que será o de destino.

Agora vamos ver mais informações sobre cada uma dessas diretrizes necessárias. Mais adiante há também um exemplo completo de configuração:

a) Para o recurso Job

Pool =

Determina onde o algoritmo de seleção de trabalhos para cópia será aplicado. É a Pool de origem.

Type = Migrate

Os Jobs selecionados são movidos da Pool de origem para a de destino (os trabalhos originais são descartados). Ou…

Type = Copy

Os Jobs são copiados para o Pool de destino. Eles receberão os tempos de retenção e reciclarão o comportamento da nova Pool, de igual sorte.

Selection Type =

Determina como os JobIds para cópia ou migração serão selecionados. Esses são os valores possíveis:

  • SmallestVolume – seleciona todos os Jobs do menor volume de pool de origem.

  • OldestVolume – seleciona todos os Jobs do volume mais antigo.

  • Client – se utilizado, requer também uma outra diretiva (SelectionPattern) que deve ser uma Expressão Regular que corresponda aos nomes dos clientes para cópia / migração apenas dos Jobs dos mesmos.

  • Volume – Se utilizada, essa diretiva também requer a SelectionPattern, neste caso uma Expressão Regular que corresponderá aos nomes de volume cujos Jobs serão copiados.
  • Job – Neste caso a SelectionPattern deve corresponder a nomes de Jobs.

  • SQLQuery Uma query SQL para encontrar JobIds diretamente do banco de dados Bacula a serem copiados.

  • PoolOccupancy o Bacula somará o tamanho de todos os volumes da Pool de origem. Se for menor do que as diretivas acessórias (necessárias no próprio recurso da Pool) MigrationLowBytes ou superior a MigrationHighBytes, ele migrará os trabalhos até que a ocupação da Pool volte aos limites definidos.
  • PoolUncopiedJobs – Este é bastante popular para backups off-site. Ele copiará todos os trabalhos que não tiverem uma cópia no Pool de destino.

Selection Pattern =

Esta diretiva não é necessária para SelectionType, OldestVolume nem SmallestVolume, mas indispensável para Client, Volume e Job. O valor de SelectionPattern deve ser um RegExp que encontrará os respectivos nomes de diretiva. Exemplo:

Selection Type = SQLQuery 
Selection Pattern = "select '<Jobid>';" # seleciona um Job apenas para copia

b) Para o recurso Pool de Origem

Migration Time =

Um período de tempo que, quando acabou, os Jobs de backup podem ser migrados se um Job de Migração for executado.

Migration High Bytes =

Tamanho máximo da ocupação da Pool.

Migration Low Bytes =

Tamanho mínimo da ocupação da Pool.

Next Pool =

Especifica o que é o pool de destino da cópia (obrigatório). No entanto, também é possível substituir esta especificação de NextPool no recurso Schedule, permitindo que você execute Jobs de cópia ou migração para Pools de destino diferentes de acordo com o tempo.

Storage =

Neste caso, o nome do Storage de origem1 deve ser especificado. O mesmo que provavelmente já vem sendo utilizado para gravar os backups desta Pool. De qualquer sorte, este é o melhor lugar para associar as Pool aos seus Storages, independente de estar configurando um job de cópia.

c) Para o recurso Pool de Destino

Storage =

O nome do Storage de destino deve ser especificado, onde os Jobs de cópia ou migração serão armazenados.

      1. Um exemplo de configuração de Job de Cópia

a) Recursos Pool (bacula-dir.conf)

# Pool de Origem
Pool {  
  Name = Monthly-Disk   
  Pool Type = backup 
  Storage = File1     # storage de origem
  Next Pool = Copy    # nome pool de destino
  ...
}

# Pool de Destino
Pool {
  Name = Copy
  Pool Type = backup 
  Storage = File2      # storage de destino
  ...
}

b) Job Resource (bacula-dir.conf)

Job {
  Name = "CopyJobs" 
  JobDefs = DefaultJob
  Type = Copy 	# ou Migrate
  Pool = Monthly-Disk   	# pool de origem
  Selection Type = PoolUncopiedJobs
  Schedule = CopySchedule  	# recomendado
}

Aplique as alterações na configuração e execute (comando run) o Job criado como teste. Neste exemplo, a primeira cópia pode levar muito tempo, uma vez que irá selecionar todos os Jobs nunca copiados da Pool de origem (SelectionPattern = PoolUncopiedJobs). Portanto, planeje o seu início cuidadosamente pois essa primeira carga de trabalho pode ser grande. Você também deve querer criar e especificar para este Job um Schedule diferente de seu backup regular, como no exemplo.

1Esse Storage já deve existir no bacula-dir.conf na forma de um recurso.

Leave a Reply

Trabajos de Copia y Migración

Trabajos de Copia y Migración

Los trabajos de copia y migración de Bacula son óptimos para mover datos de copia de seguridad de hardware de almacenamiento antiguo a nuevos, realizar copias de seguridad de disco a cinta, o implementar un segundo almacenamiento fuera de sitio.

La copia y la migración ocurren en el nivel de granularidad de Job, por lo que el tamaño de la cinta o los medios de origen o destino no es importante. Los trabajos que se van a copiar de un pool (y de almacenamiento) de la fuente de Bacala de origen se deben seleccionar a partir de algunos criterios definidos y se almacenan en un pool de destino.

La diferencia entre los trabajos de copia y migración es que Bacula descarta los Jobs grabados de la piscina de origen en el caso de la migración.

Cuando la copia de seguridad original de un trabajo copiado se recicla o se elimina por algún motivo, Bacula seleccionará automáticamente la copia para realizar una restauración de un cliente en ese momento, si se solicita.

Los trabajos de copia y migración no requieren conexión con los Clientes de Bacula. Esto generalmente significa que se puede ejecutar durante el día, sin riesgo de impacto en los demás servicios.

El ámbito de selección de Jobs para la copia, puede ser:

  • uno o varios trabajos de copia de seguridad configurados;
  • uno o varios Volúmenes, por su nombre;
  • Empleos de un cliente, por su nombre;
  • Trabajos realizados que correspondan a una expresión regular;
  • si un trabajo existe en un determinado volumen;
  • volúmenes con la suma de ocupación en una Pool inferior o superior a un valor dado;
  • tamaño del volumen.

En un resumen, para realizar un trabajo de copia o migración, debe definir un recurso de trabajo especial en bacula-dir.conf con la directiva de Type igual a Copy o Migrate; la especificación de una Pool de origen; y, al menos, pero no menos importante, uno de los SelectionType (ya menudo SelectionPattern) que define los criterios de selección capaces de encontrar Jobs para ser copiados.

En los recursos de Pool (aún en bacula-dir.conf), debe especificar en el grupo de origen de la directiva Storage (el mismo en el que se están grabando sus volúmenes, que también será el origen de la copia), además de la directiva NextPool, debe informar el nombre de otro Pool de destino de la copia. Por último, en el recurso de Pool de destino, también debe especificarse una directiva de Storage para un dispositivo de almacenamiento diferente, que será el de destino.

Ahora vamos a ver más información sobre cada una de estas directrices necesarias. Más adelante hay también un ejemplo completo de configuración:

a) Para el recurso Job

Pool =

Determina dónde se aplicará el algoritmo de selección de trabajos de copia. Es la piscina de origen.

Type = Migrate

Los trabajos seleccionados se mueven desde la Pool de origen a la de destino (los trabajos originales se descartan). O…

Type = Copy

Los trabajos se copian al Pool de destino. Ellos recibirán los tiempos de retención y reciclarán el comportamiento de la nueva piscina, de igual suerte.

Selection Type =

Determina cómo se seleccionan los JobIds para la copia o la migración. Estos son los valores posibles:

  • SmallestVolume – selecciona todos los trabajos del menor volumen de grupo de origen.
  • OldestVolume – selecciona todos los trabajos del volumen más antiguo.
  • Client – si se utiliza, también requiere otra directiva (SelectionPattern) que debe ser una Expresión regular que corresponda a los nombres de los clientes para copiar / migrar sólo de los Jobs de los mismos.
  • Volume – Si se utiliza, esta directiva también requiere SelectionPattern, en este caso una expresión regular que corresponderá a los nombres de volumen cuyos trabajos se copiarán.
  • Job – En este caso SelectionPattern debe coincidir con los nombres de Jobs.
  • SQLQuery – Una consulta SQL para encontrar JobIds directamente de la base de datos Bacula que se copiar.
  • PoolOccupancy – el Bacula sumará el tamaño de todos los volúmenes de la piscina de origen. Si es menor que las directivas accesorias (necesarias en el propio recurso de la agrupación) MigrationLowBytes o superior a MigrationHighBytes, migrará los trabajos hasta que la ocupación de la piscina vuelva a los límites definidos.
  • PoolUncopiedJobs – Esto es bastante popular para las copias de seguridad fuera de sitio. Copia todos los trabajos que no tienen una copia en el grupo de destino.
Selection Pattern =

Esta directiva no es necesaria para SelectionType, OldestVolumen ni SmallestVolume, pero indispensable para Job, Client y Volume. El valor de SelectionPattern debe ser un RegExp que encontrará sus nombres de directiva. Ejemplo:

Selection Type = SQLQuery 
Selection Pattern = "select '<Jobid>';" # Selecciona un Job sólo para copiar

b) Para el recurso Pool de Origen

Migration Time =

Un período de tiempo que, al final, los Jobs de copia de seguridad se pueden migrar si se ejecuta un trabajo de migración.

Migration High Bytes =

Tamaño máximo de la ocupación de la Pool.

Migration Low Bytes =

Tamaño mínimo de la ocupación de la Pool.

Next Pool =

Especifica qué es la Pool de destino de la copia (obligatorio). Sin embargo, también puede reemplazar esta especificación de NextPool en el recurso de programación, lo que le permite realizar trabajos de copia o migración a diferentes destinos de destino de acuerdo con el tiempo.

Storage =

En este caso, se debe especificar el nombre del Storage de origen. Lo mismo que probablemente ya está siendo utilizado para grabar las copias de seguridad de esta Pool. De cualquier suerte, este es el mejor lugar para asociar las Pool a sus Storages, independientemente de estar configurando un job de copia.

c) Para el recurso Pool de Destino

Storage =

Se debe especificar el nombre del Storage de Destino en el que se almacenan los trabajos de copia o migración.

Un Ejemplo de Configuración de Job de copia

a) Recursos Pool (bacula-dir.conf)

# Pool de Origen
Pool {  
  Name = Monthly-Disk   
  Pool Type = backup 
  Storage = File1     # storage de origen
  Next Pool = Copy    # nombre pool de destino
  ...
}

# Pool de Destino
Pool {
  Name = Copy
  Pool Type = backup 
  Storage = File2      # storage de destino
  ...
}

b) Recurso Job (bacula-dir.conf)

Job {
  Name = "CopyJobs" 
  JobDefs = DefaultJob
  Type = Copy 	# ou Migrate
  Pool = Monthly-Disk   	# pool de origen
  Selection Type = PoolUncopiedJobs
  Schedule = CopySchedule  	# recomendado
}

Aplique los cambios en la configuración y ejecute (comando run) el trabajo creado como prueba. En este ejemplo, la primera copia puede tardar mucho tiempo, ya que seleccionará todos los trabajos nunca copiados del Pool de origen (SelectionPattern = PoolUncopiedJobs). Por lo tanto, planifique su inicio cuidadosamente porque esta primera carga de trabajo puede ser grande. Usted también debe querer crear y especificar para este Job un Schedule diferente de su copia de seguridad regular, como en el ejemplo.

Leave a Reply