O MySQL pode consumir uma quantidade significativa de memória, especialmente em sistemas com recursos limitados, como VPSs. Recentemente tive problema com memória em minha VPS rodando vários containers WordPress com MySQL, os containers do MySQL estavam utilizando cerca de 500mb idle, após as alterações documentadas aqui, reduzi para cerca de 150mb!
Neste artigo, explico como reduzir o uso de memória configurando um container MySQL no Docker. Incluímos um exemplo de arquivo my.cnf otimizado, um docker-compose.yml com volume mapeado e uma explicação sobre permissões para o arquivo de configuração.
Passo 1: Criando o Arquivo de Configuração my.cnf
Crie um arquivo de configuração chamado mysql-low-memory-my.cnf em um diretório apropriado no host.
[mysqld]
# Define o tamanho do buffer principal utilizado pelo InnoDB
innodb_buffer_pool_size = 128M
# Diminui o tamanho do buffer de chave (MyISAM)
key_buffer_size = 8M
# Define o número máximo de conexões simultâneas
max_connections = 50
# Reduz o cache de threads
thread_cache_size = 8
# Limita o tamanho de tabelas temporárias em memória
tmp_table_size = 16M
max_heap_table_size = 16M
# Desativa o Performance Schema para economizar memória
performance_schema = 0
# Reduz o tamanho do buffer de log
innodb_log_buffer_size = 4M
# Ajusta o cache de tabelas abertas
table_open_cache = 200
Passo 2: Alterar Permissões do Arquivo
Após criar o arquivo mysql-low-memory-my.cnf, é importante alterar suas permissões para que o MySQL leia-o corretamente e ele não seja editável por outros processos ou usuários.
chmod 0444 mysql-low-memory-my.cnf
Passo 3: Configurando o docker-compose.yml
No arquivo docker-compose.yml, adicione o volume mapeando o arquivo de configuração para o container MySQL:
services:
mysql:
image: mysql:8
container_name: mysql-container
environment:
MYSQL_ROOT_PASSWORD: yourpassword
volumes:
- './mysql-low-memory-my.cnf:/etc/mysql/conf.d/mysq-low-memory-my.cnf'
ports:
- "3306:3306"
Passo 4: Iniciando o Container
docker compose up -d
Pronto! Agora você tem um container rodando com baixo uso de memória! Lembre-se que as configurações podem impactar na performance do seu banco de dados, então, ajuste de acordo com a sua necessidade.
Para verificar o uso de memória do container, use o comando abaixo:
docker stats mysql-container
Top comments (0)