Jump to content
Kelvin

Rotação de logs binários no MySQL (MySQL lotando HD)

Recommended Posts

Pessoal, estou recebendo reclamações recentes de cargas em 100% de disco em pessoas que estão usando MYSQL e isso ocorre pela rotação de logs binários no MYSQL. Isso nas versões anteriores a 8.0 não se tornavam um problema devido esta função ser desabilitada, porém com o MySQL 8.0 um servidor médio em 30 dias pode facilmente lotar 100GB de disco sem necessidade. 

 

4826e309-1a6b-4f21-aa9a-50bba517aa61.jpg

Os logs binários do MySQL contém uma espécie de histórico com todas as consultas SQL que são feitas em um servidor. Esses logs servem principalmente para fazer duas coisas: replicar esses dados em um servidor secundário (modelo mestre-escravo) e efetuar backups diferenciais.

Na configuração do MySQL, o log binário é configurado com duas linhas:

log-bin=/var/lib/mysql/mysql-bin.log
server-id=1

A opção log-bin indica qual o padrão de arquivos que o MySQL vai gravar. Nesse exemplo, teremos os seguintes arquivos:

  • mysql-bin.XXXXXX – Onde XXXXXX é um número sequencial, que são os logs binários em si. Vão ser vários arquivos com um tamanho máximo (por padrão, 1GB).
  • mysql-bin.index – Índice com todos os arquivos de log binário atuais.

Muitas vezes acontece da pessoa configurar isso e não tratar esses logs binários. Em um banco de dados com muito movimento, esses logs binários podem crescer assustadoramente e ocupar todo o espaço em disco.

Conheço duas formas de fazer a rotação. A que nunca deve ser feita é simplesmente apagar os arquivos de logs binários do sistema de arquivos. Como o MySQL lida com isso, nada melhor do que tratar essa limpeza com o próprio.

A primeira é utilizando a opção expire_logs_days no my.cnf. Exemplo:

expire_logs_days = 7

Os logs que forem mais velhos do que 7 dias serão excluídos do MySQL automaticamente.

Outra forma de fazer isso é via o próprio MySQL. Conecte-se a um prompt MySQL e execute:

mysql> SHOW BINARY LOGS;
+------------------+------------+
| Log_name         | File_size  |
+------------------+------------+
| mysql-bin.000858 | 1073769033 |
| mysql-bin.000859 | 1073772184 |
| mysql-bin.000860 | 1073769005 |
| mysql-bin.000861 | 1073809148 |
| mysql-bin.000862 | 1073765575 |
| mysql-bin.000863 | 1073797185 |
| mysql-bin.000864 | 1073757152 |
| mysql-bin.000865 | 1073763101 |
| mysql-bin.000866 | 1073771131 |
| mysql-bin.000867 | 1073770555 |
| mysql-bin.000868 | 1073744076 |
| mysql-bin.000869 | 1073818669 |
| mysql-bin.000870 | 1073754790 |
| mysql-bin.000871 | 1073770448 |
| mysql-bin.000872 | 1073755079 |
| mysql-bin.000873 | 1073744861 |
| mysql-bin.000874 | 1073807803 |
| mysql-bin.000875 | 1073777945 |
| mysql-bin.000876 | 1073741999 |
| mysql-bin.000877 |  718403419 |
+------------------+------------+
20 rows in set (0.00 sec)

Com isso, dá pra ver que temos muitos logs binários e quais os seus tamanhos. Então podemos apagar da seguinte forma:

 
PURGE BINARY LOGS BEFORE '2010-07-04 12:27:59';

Isso apaga os logs binários até a data/hora especificada.

Ou pode-se fazer por nome de arquivo também:

PURGE BINARY LOGS TO 'mysql-bin.000874';

Apaga todos os logs binários anteriores a sequência 000874.

Usar o expire_logs_days é a melhor opção, mas nada lhe impede que você utilize o crontab e o comando PURGE para se certificar que isto está sendo feito 🙂

----

Esse guia foi muito útil nas necessidades atuais e repliquei aqui para quem precisa resolver este "problema" em seu servidor MYSQL que roda em conjunto com o L2J.

Créditos para o guia: http://www.devin.com.br/rotacao-de-logs-binarios-no-mysql/

  • Like 2
  • I love it 1
  • Thanks 2

Nunca criou um servidor de Lineage 2?
Acompanhe nosso CURSO L2! Aula 01 e 02

Você sabia que a L2JBrasil tem uma empresa de Hosting Oficial?
Conheça a L2JCenter.com

Serviços de Hospedagem para Sites, VPS Gamer, Dedicados e Proteção Anti-DDoS
A mais de 10 anos no mercado apoiando e ajudando os maiores servidores de Lineage 2 do Mundo!

Share this post


Link to post
Share on other sites

Proteja seu servidor de ataques DDoS massivos!

VPS EPIC

Todas as versões anteriores tem este problema ? Eu uso a 5.7 e nunca tive 🤔 Será que tem algum tipo de condição para ocorrer o mesmo ?

  • Confused 1

www.l2jservidores.com.br

Interlude / Freya / High Five

Share this post


Link to post
Share on other sites
1 minuto atrás, Elesis disse:

Todas as versões anteriores tem este problema ? Eu uso a 5.7 e nunca tive 🤔 Será que tem algum tipo de condição para ocorrer o mesmo ?

É porque eu não revisei o texto ai parece que eu sou analfabeto, foi mal kkk.
Nas versões anteriores a 8.0 não tem isso. 

Porém, como todos os novos projetos estão migrando para versões mais atuais de MySQL/MariaDB é sempre bom ficar atento.

  • Like 2

Nunca criou um servidor de Lineage 2?
Acompanhe nosso CURSO L2! Aula 01 e 02

Você sabia que a L2JBrasil tem uma empresa de Hosting Oficial?
Conheça a L2JCenter.com

Serviços de Hospedagem para Sites, VPS Gamer, Dedicados e Proteção Anti-DDoS
A mais de 10 anos no mercado apoiando e ajudando os maiores servidores de Lineage 2 do Mundo!

Share this post


Link to post
Share on other sites
5 minutos atrás, Kelvin disse:

Isso nas versões anteriores a 8.0 não se tornavam um problema devido esta função esta desabilitada, porém com o MySQL 8.0 um servidor médio em 30 dias pode facilmente lotar 100GB de disco sem necessidade. 

 

3 minutos atrás, Elesis disse:

Todas as versões anteriores tem este problema ? Eu uso a 5.7 e nunca tive 🤔 Será que tem algum tipo de condição para ocorrer o mesmo ?

--

 

 

Nice tópico, Kelvin. Eu realmente nem fazia ideia disso, mas realmente pode ser um problema total e alguns poderiam tentar só apagar esses arquivos, mas poderia gerar algum dano bem maior! 😉

 

 

 

 

  • Like 1

Possui alguma dúvida em relação à configurações comuns de servidores de Lineage II? Consulte nossa área de Principais Dúvidas Resolvidas.

Você sabia que a L2JBrasil tem uma empresa de Hosting Oficial?
Conheça a L2JCenter.com

 

Share this post


Link to post
Share on other sites



     



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • This is really helpful for people who do not comprehend the fundamentals of zone system. Nice tutorial.
    • quando coloquei os fakes pra se atacar ficou aparecendo esse erro ai alguem sabe oq é ?   como se eles nao conseguisse dar tovila e voltar
    • Vai em: gameserver\config\customs\SpecialMods.properties # Custom Spawn for news players CustomSpawn = false -> true RandomAreasSpawn = 1 # X, Y, Z custom_spawn1 = 45928, 49912, -3056 (digite /loc e pegue a localização de onde ele vai nascer) custom_spawn2 = 45928, 49912, -3056 custom_spawn3 = 45928, 49912, -3056
    • Nice men ! Amigos como puedo hacer para que mi nuevo player vaya a talking Island en vez de irse a Giran ?
    • Pequena correção para quem pretender usar essa REV e ter jóias boss nos boss... O NPC Gatekeeper of Fire Dragon (npc que abre a porta até o Heart of Volcano) não estava abrindo a porta. Então procurei sobre isso e achei um tópico relacionado a Frozen 1132 mas com a solução definitiva para isso. Caminho para correção na Source: net.sf.l2j.gameserver.scripting.scripts.teleports Procure por:   elif npcId == 31384 : #Gatekeeper of Fire Dragon DoorTable.getInstance().getDoor(24210004).openMe() return elif npcId == 31686 : #Gatekeeper of Fire Dragon DoorTable.getInstance().getDoor(24210006).openMe() return elif npcId == 31687 : #Gatekeeper of Fire Dragon DoorTable.getInstance().getDoor(24210005).openMe() return   E altere os números em vermelho para: 4 5 e 6 respectivamente.   elif npcId == 31384 : #Gatekeeper of Fire Dragon DoorTable.getInstance().getDoor(24210004).openMe() return elif npcId == 31686 : #Gatekeeper of Fire Dragon DoorTable.getInstance().getDoor(24210005).openMe() return elif npcId == 31687 : #Gatekeeper of Fire Dragon DoorTable.getInstance().getDoor(24210006).openMe() return   Correção simples mas que vai ajudar quem queira moldar seu servidor nesse estilo. Créditos pela correção: leozinhobr2    
    • Você está usando a ultima atualização postada? se não baixa e tente novamente, pode resolver seu problema e conserto de alguns bugs já relatados. Se tiver mais alguma dúvida pergunte no forum de duvidas, que responderemos da mesma forma. https://www.l2jbrasil.com/forum/18-dúvidas/
    • Você sabe como resolver esse erro? O gameserver nunca passa disso...
    • Obrigado a todos pela resposta do tvt 2x2 e 4x4 etc, eu não tenho conhecimento desse evento e coisas semelhantes. Show
    • cara esse evento sempre foi assim. não cola o cara participar do evento se n ganhar nada. o servidor entrega a equipe ganhadora uma quantidade que vc configura exe.: 5 Turnamente o perdedor para n ficar triste o server da 1 pra ele. mas é só vc colocar 0 e pronto.
    • acho que eles erraram na descrição, pois como vai tirar um item que eles não tem.. como pode ver na função Reward = Recompensa eu penso assim, equipe vencedora ganha 5 itens e a equipe perdedora ganha 1 = como premio de participação. 
×
×
  • Create New...