# Backup do MariaDB: como proteger seus dados

Para o funcionamento seguro de qualquer banco de dados, os backups são indispensáveis. Uma falha, uma atualização com erro ou um incidente de segurança pode apagar dados de forma irreversível. Neste tutorial, você vai aprender como proteger de modo eficaz as bases de dados MariaDB e realizar um backup completo do MariaDB.

## Tipos de backup do MariaDB: lógico vs. físico

[MariaDB](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/banco-de-dados-mariadb/) diferencia entre dois tipos de backups:

- **Backups lógicos** armazenam dados em um formato executável SQL. Eles incluem instruções como `CREATE TABLE` e `INSERT INTO`, que permitem restaurar a estrutura e os conteúdos do banco de dados. Backups lógicos são ideais para transferir dados para outros sistemas, versões diferentes ou até mesmo para outros sistemas de banco de dados.
- **Backups físicos** copiam arquivos e diretórios do banco de dados diretamente do sistema de arquivos. Este método é mais rápido e eficiente, especialmente para grandes volumes de dados. No entanto, ele funciona de forma confiável apenas se o servidor, os formatos de armazenamento e as versões do MariaDB permanecerem idênticos.

Para muitos cenários, é interessante que você faça uma combinação de ambas as técnicas, como por exemplo, fazer dumps lógicos para dados ou tabelas individuais e backups físicos para restaurações completas e rápidas.

## Opções para criar um backup MariaDB

MariaDB oferece várias ferramentas para realizar backups de dados. Dependendo do propósito, da quantidade de dados e do ambiente do sistema, diferentes métodos podem ser considerados.

### mariadb-dump

`mariadb-dump` é a ferramenta de backup mais conhecida do MariaDB. Ela cria backups lógicos e armazena os dados como um **arquivo SQL**. Este arquivo pode ser restaurado posteriormente usando o cliente MariaDB.

**Vantagens:**

- Funciona em qualquer sistema com cliente MariaDB
- Realiza backup de tabelas, de uma ou todas as bases de dados
- Compatível com outras versões do MariaDB e MySQL

**Desvantagens:**

- Grandes volumes de dados aumentam o tempo de backup e restauração
- Durante o mariadb backup podem ocorrer picos de carga

### mariadb backup

`mariadb backup` faz backup de dados fisicamente. A ferramenta é baseada no **Percona XtraBackup** e foi ampliada para MariaDB. Ela suporta criptografia e compressão.

**Vantagens:**

- Rápido e eficiente em grandes volumes de dados
- Realiza mariadb backups durante a operação (Hot Backup)
- Adequado para sistemas de produção com tabelas InnoDB

**Desvantagens:**

- Funciona apenas com InnoDB (não com MyISAM)
- Maior esforço na configuração e restauração

### Outras opções

- **mariadb-hotcopy:** ferramenta antiga para tabelas MyISAM (não é mais mantida)
- **LVM-Snapshots:** backup em nível de sistema de arquivos. Muito rápido, mas mais complexo
- **dbForge Studio:** solução gráfica para sistemas Windows com interface conveniente

## Exemplo prático: realizar backup do Mariadb com mariadb-dump

Você precisa de acesso ao servidor de banco de dados e uma conta de usuário com direitos de backup (por exemplo, root). Abra um terminal ou uma conexão SSH. Certifique-se de que o comando `mariadb-dump` esteja instalado e disponível no caminho.

### Fazer backup de todas as bases de dados

Execute o seguinte comando:

```bash
mariadb-dump -u root -p --all-databases --result-file=/backups/backup_all.sql
```

**Explicação:**

- `-u root`: define o usuário root.
- `-p`: solicita a inserção da senha.
- `--all-databases`: faz o backup de todas as bases de dados existentes.
- `--result-file`: define o arquivo de destino para o backup.

O mariadb backup inclui todas as bases de dados, incluindo a administração de usuários, triggers, views e tabelas do sistema.

### Fazer o backup de uma base de dados específica

O seguinte comando `--databases shop_db` faz o backup apenas do banco de dados especificado.

```bash
mariadb-dump -u root -p --databases shop_db --result-file=/backups/shop_db.sql
```

Se você quiser evitar a instrução CREATE DATABASE no dump, use:

```bash
mariadb-dump -u root -p shop_db --result-file=/backups/shop_db.sql
```

Neste caso, você terá que criar o banco de dados por conta própria durante a restauração.

### Fazer backup de várias bases de dados

A seguir, liste as bases de dados que serão incluídas no backup. Você gerará um arquivo SQL com instruções para todas as bases de dados listadas.

```bash
mariadb-dump -u root -p --databases db1 db2 db3 --result-file=/backups/multiple.sql
```

### Fazer backup de tabelas individuais

Especificamos o banco de dados e as tabelas desejadas diretamente no comando. Isso é útil para exportações específicas, por exemplo, ao migrar tabelas individuais.

```bash
mariadb-dump -u root -p db_name table1 table2 --result-file=tables.sql
```

### Possíveis opções para mariadb-dump

<table>
  <thead>
    <tr>
      <th>Opção</th>
      <th>Descrição</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>--no-data</td>
      <td>Faz backup apenas da estrutura, sem os dados</td>
    </tr>
    <tr>
      <td>--no-create-info</td>
      <td>Faz backup apenas dos dados, sem a estrutura das tabelas</td>
    </tr>
    <tr>
      <td>--routines</td>
      <td>Faz backup de procedimentos e funções</td>
    </tr>
    <tr>
      <td>--events</td>
      <td>Faz backup de eventos agendados</td>
    </tr>
    <tr>
      <td>--single-transaction</td>
      <td>Backup sem bloqueios em tabelas InnoDB</td>
    </tr>
    <tr>
      <td>--quick</td>
      <td>Reduz o uso de memória em tabelas grandes</td>
    </tr>
  </tbody>
</table>

### MariaDB: automatizar backup usando Cron

Automatize backups diários com um Cronjob. Abra a tabela do Cron:

```bash
crontab -e
```

Insira esta linha para, por exemplo, criar um backup diariamente às 3 horas:

```bash
0 3 * * * mariadb-dump -u root -p password --all-databases --result-file=/backups/backup-$(date +\%F).sql
```

Por razões de segurança, não armazene senhas diretamente na tabela do Cron. Em vez disso, crie um arquivo de configuração .my.cnf no diretório home:

```bash
[client]
user=root
password=password
```

Defina os direitos de acesso:

```bash
chmod 600 ~/.my.cnf
```

Em seguida, use a seguinte variante nos Cronjobs sem senha:

```bash
mariadb-dump --all-databases --result-file=/backups/backup-$(date +\%F).sql
```

Use mariadb-dump preferencialmente para backups flexíveis e independentes de sistema, além de menores volumes de dados. Para sistemas produtivos com grandes bases de dados, recomenda-se o mariadb-backup. Faça backups regularmente e verifique-os por meio de restaurações de teste. Apenas um backup testado protege de forma confiável contra perda de dados.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/mariadb-backup/](https://www.ionos.com/pt-br/digitalguide/hospedagem/tecnologia-de-hospedagem/mariadb-backup/) for AI/LLM consumption.