AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 320418
Accepted
Niyaz
Niyaz
Asked: 2022-12-01 13:05:07 +0800 CST2022-12-01 13:05:07 +0800 CST 2022-12-01 13:05:07 +0800 CST

Como gerenciar o binlog no MySQL?

  • 772

Tenho um banco de dados com três tabelas grandes, possui as seguintes especialidades:

  1. Três tabelas com cerca de 15 milhões de inserções por hora para cada tabela.
  2. Sem atualização.
  3. Selecione a consulta rapidamente com a ajuda de Indexinge Partition.
  4. Só mantenho os dados por 14 dias, eu uso PARTITION . Cada partição por um dia. Eu crio um novo Partitionàs 23h50 (antes do início do novo dia) e excluo a partição de 15 dias atrás. (Rápido e preciso)
  5. Eu faço backup do conjunto de dados todos os dias, por um dia. (somente dados de ontem)

Eu monitorei meu log binário por nove dias, o tamanho do log aumentou drasticamente. O problema é: em algum momento, o binlog ocupa todo o meu espaço em disco. Minhas perguntas são:

  1. No meu caso, preciso de binlog? (Se o benefício for apenas replicação, não preciso disso agora)
  2. Qual é a melhor maneira de gerenciar o binlog? (Se eu mantiver)
  3. Existe alguma relação entre Partitione binlog? (Se eu desabilitar)

O comando que executa, tabela e configuração do MySQL é mostrado abaixo.

du -ch /var/lib/mysql/binlog.* | tail -n 1
innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_log_file_size=1G
innodb_buffer_pool_size=4G
Data Tamanho total em GB
2022-11-22 289 GB
2022-11-23 300 GB
2022-11-24 311 GB
2022-11-25 322 GB
2022-11-26 334 GB
2022-11-27 364 GB
2022-11-28 378 GB
2022-11-29 417 GB
30/11/2022 437 GB
mysql
  • 1 1 respostas
  • 60 Views

1 respostas

  • Voted
  1. Best Answer
    Bill Karwin
    2022-12-02T08:32:04+08:002022-12-02T08:32:04+08:00

    Existem vários usos do log binário:

    • Replicação, como você sabe.
    • Recuperação pontual. Se você precisar restaurar a partir de um backup recente, usar o log binário de alterações desde esse backup pode trazer sua restauração para a alteração mais recente (desde que você ainda tenha os logs binários). Consulte https://dev.mysql.com/doc/refman/8.0/en/point-in-time-recovery-binlog.html
    • Alimentando ferramentas de captura de dados alterados (um exemplo de código aberto é o Debezium ), para que você possa transmitir o MySQL para um data warehouse ou outro destino.
    • Às vezes, investigando alterações suspeitas nos dados. Isso é de uso limitado, porque o log binário registra carimbos de data/hora, mas não nomes de usuário. Um log de auditoria seria melhor, mas muitas vezes estive em ambientes onde a gerência não acha que precisa de um log de auditoria, mas então algo acontece e eles querem que alguma alteração de dados seja investigada.

    Se um ou mais desses usos se aplica ao seu caso, você deve manter seu log binário. Você não forneceu informações suficientes para que eu saiba disso.

    O log binário se acumula e cresce cada vez mais, a menos que você expire alguns ou todos os arquivos. Você pode fazer isso manualmente com PURGE BINARY LOGS (isso não permitirá que você remova o último log binário, porque esse arquivo de log está sendo gravado no momento).

    • No MySQL 8.0, os logs binários também expiram automaticamente após 30 dias por padrão, ou você pode configurá-los para um período de tempo diferente (consulte binlog_expire_logs_seconds ).

    • No MySQL 5.x, você pode opcionalmente configurar a expiração automática de logs binários, mas o padrão é reter todos os logs binários para sempre (consulte expire_logs_days ).

    Observe que a expiração significa que, quando o log binário rola para abrir um novo arquivo, ele verifica os arquivos mais antigos e, se forem mais antigos do que a janela de tempo de expiração, eles são removidos. Lembre-se que isso não acontece até que o log abra um novo arquivo. Ao usar o MySQL 5.x, isso pode levar a situações em que os arquivos não expiram enquanto você está fazendo uma grande importação/exportação de dados, porque a granularidade da idade do arquivo é em dias. Em outras palavras, se sua expiração for para logs com mais de 1 dia, mas você preencher 500 GB de dados em um dia, poderá acumular 500 arquivos binlog e nenhum deles tiver mais de 1 dia, portanto, eles não expiram ainda . Fico feliz que tenham mudado a granularidade para 1 segundo no MySQL 8.0.

    Não há nenhuma relação especial entre o particionamento e os logs binários. O log binário registra todas as alterações DML e DDL (embora seja possível para uma determinada sessão suprimir as gravações no log binário).

    DDL é sempre gravado no log binário no formato de instrução. Não há como ALTER TABLE ocupar mais espaço no log binário dependendo do tamanho da tabela. Portanto, se seu log binário está aumentando muito, é por causa do DML (INSERT/UPDATE/DELETE). Sua DROP PARTITION diária não é responsável.

    • 1

relate perguntas

  • Existem ferramentas de benchmarking do MySQL? [fechado]

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

  • Quando é o momento certo para usar o MariaDB em vez do MySQL e por quê?

  • Como um grupo pode rastrear alterações no esquema do banco de dados?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve