Monday, June 06, 2022

 Limpando logs binários do MariaDB

Hoje me deparei com um alerta de pouco espaço em disco de um servidor de banco de dados MariaDB em um CentOS 7.9.

Fiz todos os procedimentos de localização e limpeza de diretórios que pude, inclusive relocação de alguns diretórios de backup que estavam no local de origem e ainda assim não havia mudança significativa no espaço em disco.

Usando o comando du verifiquei que o consumo do diretório /var/lib/mysql estava estranho e verificando o seu conteúdo, estranhei a presença de arquivos com tamanhos variados e nomes semelhantes a master-bin.<coloque um número serial aqui>.

Pesquisando mais a fundo e com a ajuda do amigoogle, descobri que se tratavam de logs binários usados para replicação de bases de dados para outros servidores.

Usando o comando cat ~/.mysql_history verifiquei que há algum tempo a replicação havia sido ativada, mas por algum motivo não estava sendo efetivada. Então estes arquivos de log estavam sendo gerados, mas não eram apagados pois a replicação não ocorria.

Pesquisando no Google, cheguei às página https://mariadb.com/kb/en/show-binary-logs/ e https://mariadb.com/kb/en/purge-binary-logs/ que explicam para que servem, como consultar o estado dos arquivos binários de log e como apagá-los.

Basicamente, você consulta a situação dos logs com o coamando seguinte comando, dentro do MariaDB:

[Markdown](http://daringfireball.net/projects/markdown/) is cool!
```sql
MariaDB [(none)]> SHOW BINARY LOGS;
+-------------------+------------+
| Log_name          | File_size  |
+-------------------+------------+
| master-bin.000001 | 1073746660 |
| master-bin.000002 |  176148480 |
| master-bin.000003 |      26489 |
| master-bin.000004 | 1073744064 |
| master-bin.000005 |  136368128 |
| master-bin.000006 |  373500277 |
| master-bin.000007 | 1073743409 |
| master-bin.000008 | 1073743756 |
| master-bin.000009 | 1073820866 |
| master-bin.000010 |  135880597 |
| master-bin.000011 | 1073743475 |
| master-bin.000012 | 1073743563 |
| master-bin.000013 | 1073745827 |
| master-bin.000014 |  620269453 |
+-------------------+------------+
14 rows in set (0.011 sec)
MariaDB [(none)]>
```

E sabendo a data de criação dos arquivos pode definir quais serão apagados com o comando abaixo:

[Markdown](http://daringfireball.net/projects/markdown/) is cool!
```sql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 15328531

Server version: 10.3.28-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> PURGE BINARY LOGS BEFORE '2022-01-01';
Query OK, 0 rows affected (0.043 sec)
```

 

E verifica a situação dos logs novamente:

[Markdown](http://daringfireball.net/projects/markdown/) is cool!
```sql
MariaDB [(none)]> SHOW BINARY LOGS;
+-------------------+------------+
| Log_name          | File_size  |
+-------------------+------------+
| master-bin.000009 | 1073820866 |
| master-bin.000010 |  135880597 |
| master-bin.000011 | 1073743475 |
| master-bin.000012 | 1073743563 |
| master-bin.000013 | 1073745827 |
| master-bin.000014 |  620558958 |
+-------------------+------------+
6 rows in set (0.000 sec)

MariaDB [(none)]>  ```

Bom, é isso! Agora é decidir se restabelece a replicação ou se mantém o banco de dados do jeito com está.

Seja como for, da próxima vez que o espaço em disco estiver "sumindo" dê uma olhada no seu banco de dados. Pode ser que ele tenha alguma surpresa.

Até a próxima!

 

1 comment:

andersonserra said...

Boa CWagner! Obg por compartilhar conhecimento conosco!