sexta-feira, 14 de fevereiro de 2020

[Sobre o Zabbix] Otimizando Tabelas do MariaDB


Neste post irei mostrar como realizar a otimização de tabela no MariaDB no banco de dados do Zabbix. 

Antes de iniciar o procedimento é necessário realizar backup do banco por questões de segurança. Para isso, pare o Serviço do Zabbix Server e realize o backup.

Versão do MariaDB: 10.2.21-MariaDB

Como foi dito, é aconselhável que realize backup do banco do Zabbix. Feito isso, mãos a massa:


  • Primeiro é necessário parar todo o Serviço do Zabbix Server e Agent;
  • Feito isso é necessário conectar-se ao MariaDB.

Feito isso iremos descobrir quais tabelas do banco do Zabbix possuem mais de 100MB livre:

USE NOME_DO_BANCO_DO_ZABBIX;

SELECT TABLE_NAME,        ROUND((DATA_LENGTH + INDEX_LENGTH)/1024/1024) AS USED_SPACE_MB,         ROUND(DATA_FREE/1024/1024) AS UNUSED_SPACE_MB  FROM INFORMATION_SCHEMA.TABLES  WHERE ROUND(DATA_FREE/1024/1024) > 100  ORDER BY UNUSED_SPACE_MB DESC;

+--------------+---------------+-----------------+
| TABLE_NAME   | USED_SPACE_MB | UNUSED_SPACE_MB |
+--------------+---------------+-----------------+
| history      |           662 |             137 |
| history_uint |           994 |             153 |
+--------------+---------------+-----------------+
2 rows in set (0.01 sec)

Como resultado da consulta vemos que as tabelas "history" e "history_uint" possuem mais de 100MB de espaço livre sem utilização, cabendo assim uma otimização dessas tabelas. Bem como o tamanho das duas tabelas, 662MB e 994MB, respectivamente.

Agora iremos realizar a otimização dessas duas tabelas uma de cada vez:

OPTIMIZE TABLE history;
OPTIMIZE TABLE history_uint;

Pronto! Realizamos a otimização das tabelas, agora iremos consultá-las após procedimento:

SELECT TABLE_NAME,
       ROUND((DATA_LENGTH + INDEX_LENGTH)/1024/1024, 2) AS USED_SPACE_MB, 
       ROUND(DATA_FREE/1024/1024, 2) AS UNUSED_SPACE_MB 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME in  
('history', 'history_uint') ORDER BY UNUSED_SPACE_MB DESC;;

+--------------+---------------+-----------------+
| TABLE_NAME   | USED_SPACE_MB | UNUSED_SPACE_MB |
+--------------+---------------+-----------------+
| history      |           334 |              41 |
| history_uint |           455 |              49 |
+--------------+---------------+-----------------+
2 rows in set (0.00 sec)

Percebam que após otimização das tabelas o tamanho das mesmas reduziram mais da metade bem como o espaço livre!

No meu caso tive uma redução de tamanho de base de quase 900MB.

Tamanho do banco antes da otimização: 1.68GB
Tamanho do banco após otimização: 907MB.

Bom, espero ter ajudado!
\O


3 comentários:

  1. Como vc fez pra ver os tamos da tabela dentro do zabbix, essa tela ai que ta no print.

    Obrigado

    ResponderExcluir
    Respostas
    1. Montei a query que retorna o tamanho de cada tabela que desejo monitorar. Mas nativamente no Zabbix 4.4 (eu acho) já tem isso. ;)

      Excluir