# Backup

## Introdução

Esse manual descreve os processos para gerar backups da HBase e restaurar a database a partir desses backups. O processo para fazer backup da Hbase está descrito no [Manual do Apache HBase](https://hbase.apache.org/book.html#backuprestore), e esse documento ressalta as particularidades requeridas para realizar os backups do HBase do servidor GBDS.

## Configurações

Os primeiros passos para realizar o backup do banco de dados começa em [Seção 83](https://hbase.apache.org/book.html#br.overview).

Na [seção 86](https://hbase.apache.org/book.html#br.initial.setup), atente-se as configurações, que são pre-requisitos para o procedimento.

Os procedimentos na [seção 86.2](https://hbase.apache.org/book.html#_hbase_specific_changes) devem ser executados através da página de administração do Ambari:

> `http://<ambari-server>:8080/#/main/services/HBASE/configs`

Para configurar o ambiente para o backup, acesse o **HBase** através da página principal do **Ambari**, então acesse a aba de **Configs** e o menu **Advanced** para fazer as seguintes configurações:

1. Entre no menu **Advanced hbase-site** e defina o valor da propriedade `hbase.coprocessor.region.classes` para `org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint,org.apache.hadoop.hbase.backup.BackupObserver`
2. Entre no menu **Custom hbase-site** e através da opção **Add Property** option, adicione as seguintes propriedades:

   **hbase.backup.enable**

   > Valor: `true`

   **hbase.master.logcleaner.plugins**

   > Valor: `org.apache.hadoop.hbase.backup.master.BackupLogCleaner`

   **hbase.procedure.master.classes**

   > Valor: `org.apache.hadoop.hbase.backup.master.LogRollMasterProcedureManager`

   **hbase.procedure.regionserver.classes**

   > Valor: `org.apache.hadoop.hbase.backup.regionserver.LogRollRegionServerProcedureManager`

   **hbase.master.hfilecleaner.plugins**

   > Valor: `org.apache.hadoop.hbase.backup.BackupHFileCleaner`

   **hbase.regionserver.thread.compaction.small**

   > Valor: `3`

## Criando Backups

A [Seção 87.1](https://hbase.apache.org/book.html#br.creating.complete.backup) descreve a criação do arquivo de backup, que é criado inicialmente dentro do HDFS e deve ser movido para um local fora das pastas do HBase.

O seguinte comando é usado para criar o arquivo de backup, sendo completo ou incremental:

```shell
hbase backup create <type> hdfs://<NAME-NODE-SERVER>:8020/<HDFS BACKUP DIR> -t anomalies,people,transactions,uls,unresolvedlatent,quality,transactionkeys -w 3
```

As seguintes variáveis devem ser mudadas de acordo com seu ambiente antes de realizar o comando acima:

* **type**

  > Essa variável define se o backup que será criado será `full` ou `incremental`.
* **NAME-NODE-SERVER**

  > Essa variável refere-se ao Name-node server do atual ambiente onde o backup será criado. O mesmo ocorre com a exportação e restauração de backups.
* **HDFS BACKUP DIR**

  > Esta variável se refere ao diretório HDFS onde o arquivo de backup será armazenado.
* **-t**

  > Esse token se refere e deve ser seguido pelas tabelas do HBase que será incluída no arquivo de backup. O exemplo acima contém as tabelas padrão que devem ser incluidos no arquivo de backup do GBDS.
* **-w**

  > Esse token se refere e deve ser seguido pelo número de trabalhadores que irão ser dedicados na realização do backup.

{% hint style="info" %}
O número padrão de réplicas que serão criadas do arquivo de backup é `3`. Para mudar esse valor, execute o seguinte comando:

```shell
hdfs dfs -setrep -R 2 hdfs://<NAME-NODE-SERVER>:8020/<HDFS BACKUP DIR>
```

{% endhint %}

O **HDFS BACKUP DIR** deve ter o mesmo caminho usado como destino ao criar o arquivo de backup.

O token **-setrep** se refere ao novo fator de replicação sendo definido para o arquivo de backup, e é seguido pelo token **-R**, que define a operação como recursiva (a mesma operação será realizada para qualquer arquivo ou pasta dentro do caminho especificado), e o novo número de réplicas (neste caso, `2`).

## Exportando o Arquivo de Backup

Para exportar um arquivo de backup, o seguinte comando deve ser usado par amover o arquivo de backup para a unidade local, para então ser movido para uma fonte externa:

```shell
hdfs dfs -get hdfs://<NAME-NODE-SERVER>:8020/<HDFS> /<LOCAL-DRIVE-DIR>
```

As variáveis desse comando são descritas em [Criando Backups](#criando-backups).

A variável **LOCAL-DRIVE-DIR** deve ser mudada de acordo com o caminho na unidade local onde o arquivo de backup será movido.

## Restaurando Backups

A [Seção 87.2](https://hbase.apache.org/book.html#br.restoring.backup) descreve o processo para restaurar o banco de dados para o estado antes do backup.

Há duas opções para restaurar um arquivo de backup: para o mesmo ambiente (sem exportar o arquivo de backup do HDFS) e para um ambiente diferente (importando um arquivo de backup externo). As seções seguintes detalham ambos casos.

### Restaurando ao Mesmo Ambiente

The following command is used to restore a backup within the same HDFS:

```shell
hbase backup history
hbase restore hdfs://<NAME-NODE-SERVER>:8020/<HDFS BACKUP DIR> <backup-id> -o -t anomalies,people,transactions,uls,unresolvedlatent,quality,transactionkeys
```

No comando acima, o **HDFS BACKUP DIR** deve ser mudado de acordo com o caminho para o arquivo de backup que será restaurado. O **backup-id** deve ser o identificador único do backup que será restaurado.

O token **-o** define se os dados atuais devem ser sobrescritos pela restauração e o token **-t** refere-se às tabelas HBase que devem ser restaurado a partir do backup.

### Resutanrando para um Ambiente Diferente

Para restaurar o backup com um ambiente diferente, o backup deve ser previamente exportado do ambiente original de acordo com o processo descrito na seção [Exportando o Arquivo de Backup](#exportando-o-arquivo-de-backup). Uma vez que é movido a unidade local do novo ambiente, ele deve ser colocado no HDFS através do seguinte comando:

```shell
hdfs dfs -put <LOCAL DRIVE BACKUP DIR> hdfs://<NAME-NODE-SERVER>:8020/<HDFS BACKUP DIR>
```

O **LOCAL DRIVE BACKUP DIR** deve ser o caminho dentro da unidade local onde o arquivo de backup está localizado e o **HDFS BACKUP DIR** deve ser o caminho dentro do HDFS local onde o backup será armazenado. Uma vez que o backup é importado, o processo de restauração é o mesmo descrito em [Restaurando ao Mesmo Ambiente](#restaurando-ao-mesmo-ambiente).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/instalacao-do-gbds/backupguide.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
