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 / 332066
Accepted
Steve Wu
Steve Wu
Asked: 2023-10-12 10:54:06 +0800 CST2023-10-12 10:54:06 +0800 CST 2023-10-12 10:54:06 +0800 CST

Por que o binlog do MySQL contém apenas um registro: rotação de log

  • 772

Uma das minhas instâncias escravas do mysql contém vários arquivos de log binários incomuns

  • mysql-bin.023896 250,01 MB 2023-10-11 08:30:06.478997000 (última modificação)
  • mysql-bin.023897 2,27 GB 2023-10-11 11:27:23.128550000
  • mysql-bin.023898 15,67 MB 11/10/2023 11:27:23.261558000
  • mysql-bin.023899 281Bytes 11/10/2023 11:27:24.967536000
  • mysql-bin.023900 250,01 MB 2023-10-11 12:26:16.466269000

Por normal, quero dizer que o tamanho deve ser 250 MB (max_binlog_size é 250 MB), mas mysql-bin.023897contém 2,27 GB, e o subsequente é 15,67 MB, então o próximo é mysql-bin.023899ridiculamente pequeno, seu tamanho é de apenas centenas de bytes...

O conteúdo de mysql-bin.023899não diz nada além de que o mysql gravará logs binários emmysql-bin.023900

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#231011  3:25:16 server id 1630115779  end_log_pos 123 CRC32 0x29f40f84 Start: binlog v 4, server v 5.7.26-log created 231011  3:25:16
BINLOG '
HKUlZQ/DlylhdwAAAHsAAAAAAAQANS43LjI2LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXwAEGggAAAAICAgCAAAACgoKKioAEjQA
AYQP9Ck=
'/*!*/;
# at 123
#231011  3:25:16 server id 1630115779  end_log_pos 234 CRC32 0x0acbf66f Previous-GTIDs
# ac711cc5-2cff-11ed-82c4-5c6f69e9b080:1-7268,
# ef8421a8-2cf4-11ed-9afa-5c6f69e75ed0:117-1391824263
# at 234
#231011  3:25:16 server id 1630115779  end_log_pos 281 CRC32 0x23f57343 Rotate to mysql-bin.023900  pos: 4
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

Questões

  1. Por que o tamanho do binlog aumenta para 2,27 GB de repente e diminui para 15,67 MB, 281 Bytes posteriormente? O conteúdo de mysql-bin.023897 mostra que ele contém uma grande transação. Essa poderia ser a causa raiz?

  2. Não seria bobagem o MySQL registrar apenas um evento de rotação em mysql-bin.023899 e pular para o próximo arquivo binlog? Por que o MySQL está fazendo isso?

mysql
  • 1 1 respostas
  • 282 Views

1 respostas

  • Voted
  1. Best Answer
    Bill Karwin
    2023-10-12T11:24:36+08:002023-10-12T11:24:36+08:00

    O MySQL fecha o arquivo de log binário atual e abre o próximo arquivo de log binário quando qualquer uma das seguintes situações acontecer:

    • O servidor MySQL é reiniciado.

    • Alguém corre FLUSH LOGS;ou FLUSH BINARY LOGS;. É possível que alguém tenha feito isso duas vezes em rápida sucessão, então um arquivo binlog foi aberto, mas não obteve nenhum evento antes de ser fechado e o próximo arquivo binlog foi aberto. Consulte https://dev.mysql.com/doc/refman/8.0/en/log-file-maintenance.html

    • O arquivo binlog atual excede max_binlog_size. Mas o arquivo pode ultrapassar isso, porque o MySQL não dividirá as alterações associadas a uma transação, e as transações praticamente não têm limite de tamanho.

      Referência: https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_max_binlog_size diz:

    Uma transação é gravada em um bloco no log binário, portanto nunca é dividida entre vários logs binários. Portanto, se você tiver grandes transações, poderá ver arquivos de log binários maiores que max_binlog_size.

    Com isso em mente, faz sentido que alguns arquivos de log binários possam ser muito pequenos e outros possam ser inesperadamente grandes?

    • 4

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