RMAN Backup Balancing: Optimizing Backup Workloads

A dica de hoje é de como acelerar um backup fisico com rman usando paralelismo e balanceamento entre os nós do RAC. Este recurso é muito bom devido ao balanceamento de carga que podemos dividir sem sobrecarregar um unico servidor ao realizar o backup de um ou mais databases.

Para realizar o balanceamento automático, é necessario utilizar a SCAN ou configurar o TNSNAMES com o balanceamento entre as VIPS, irei demonstrar as duas opções.

  • Para usar o balanceamento automático via SCAN, criei no TNSNAMES uma entrada chamada ORAPRD_BACKUP, apontando para a SCAN vm01-scan.teste.br do database ORAPRD. Com essa configuração, os listeners da SCAN direcionam cada canal do RMAN para a instância com menor carga no momento da conexão, distribuindo o backup entre os nós do RAC. Veja o exemplo abaixo:

ORAPRD_BACKUP =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = vm01-scan.teste.br)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORAPRD)
    )
  )
  • Para usar o balanceamento pelo próprio TNSNAMES, sem depender da SCAN, criei uma entrada chamada ORAPRD_BACKUP para o database ORAPRD, listando as VIPs de cada nó do RAC. Com o parâmetro LOAD_BALANCE=ON, o cliente escolhe aleatoriamente um dos endereços a cada nova conexão, distribuindo os canais do RMAN entre os nós. Com FAILOVER=ON, se uma VIP não responder, a conexão é redirecionada para a próxima. Veja o exemplo abaixo:

ORAPRD_BACKUP =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.1)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.2)(PORT = 1521))
    (LOAD_BALANCE = ON)
	(FAILOVER = ON)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORAPRD)
    )
  )

Neste exemplo, optei por utilizar o balancamento via SCAN, abaixo backup e logs da execução com balanceamento entre os nodes do RAC.

Para execução do backup utilizando a SCAN para balanceamento, será necessário um usuário e senha para realizar a conexão e execução do backup, você pode criar uma usuário apenas para realizar o backup, como este ambiente é controlado, utilizei o SYS senha oracle conectando na entrada ORAPRD_BACKUP, realizando o backup com parallelismo igual a 12:

run
{
#Allocated 12 channels to perform parallelism.
configure device type disk parallelism 12 backup type to backupset;
#Connect to scan for backup load balancing
configure channel device type disk connect 'SYS/oracle@ORAPRD_BACKUP' maxpiecesize 64g format '/backups/rman/%d_full_%I-%s-%U.bak';
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/backups/rman/%F';
configure retention policy to recovery window of 1 days;
sql "alter system switch all logfile";
backup as compressed backupset incremental level=0 database include current controlfile tag='db_full_cf' plus archivelog tag='arc_full_cf';
backup current controlfile tag='cf_current_full';
sql "alter system switch all logfile";
crosscheck backup of database;
crosscheck archivelog all;
crosscheck copy;
}

No log abaixo, os 12 canais foram distribuidos entre os nós do RAC, como tenho dois nós neste RAC, cada node abriu 6 canais:

Starting backup at 10/04/2024 12:01:20
current log archived
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=2309 instance=oraprd1 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=1342 instance=oraprd1 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=3035 instance=oraprd1 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=1224 instance=oraprd1 device type=DISK
allocated channel: ORA_DISK_5
channel ORA_DISK_5: SID=1712 instance=oraprd2 device type=DISK
allocated channel: ORA_DISK_6
channel ORA_DISK_6: SID=1960 instance=oraprd1 device type=DISK
allocated channel: ORA_DISK_7
channel ORA_DISK_7: SID=2188 instance=oraprd2 device type=DISK
allocated channel: ORA_DISK_8
channel ORA_DISK_8: SID=2428 instance=oraprd1 device type=DISK
allocated channel: ORA_DISK_9
channel ORA_DISK_9: SID=2923 instance=oraprd2 device type=DISK
allocated channel: ORA_DISK_10
channel ORA_DISK_10: SID=609 instance=oraprd2 device type=DISK
allocated channel: ORA_DISK_11
channel ORA_DISK_11: SID=1102 instance=oraprd2 device type=DISK
allocated channel: ORA_DISK_12
channel ORA_DISK_12: SID=2670 instance=oraprd2 device type=DISK

Espero que essa dica possa te ajudar para acelerar e balancear a carga dos seus backups em ambiente RAC.

search previous next tag category expand menu location phone mail time cart zoom edit close