Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/ Relational Database Service/ Melhores práticas/ RDS for MySQL/ Descrição de innodb_flush_log_at_trx_commit e sync_binlog
Atualizado em 2024-09-24 GMT+08:00

Descrição de innodb_flush_log_at_trx_commit e sync_binlog

O innodb_flush_log_at_trx_commit e o sync_binlog são parâmetros importantes para controlar a política de gravação em disco e a segurança de dados do RDS for MySQL. Valores de parâmetros diferentes têm impactos diferentes no desempenho e na segurança.

Tabela 1 Descrição do parâmetro

Parâmetro

Valores permitidos

Descrição

innodb_flush_log_at_trx_commit

0, 1 e 2

Controla o equilíbrio entre a estrita conformidade ACID para operações de confirmação e o maior desempenho que é possível quando as operações de I/O relacionadas a confirmação são reorganizadas e feitas em lotes. O valor padrão é 1. Para mais detalhes, consulte Descrição do parâmetro.

sync_binlog

0 a 4, 294, 967, 295

Sincronizar binlog (o RDS for MySQL libera os logs binários para os discos ou depende do sistema operacional).

Descrição do parâmetro

  • innodb_flush_log_at_trx_commit:
    • 0: o buffer de log é gravado no arquivo de log uma vez por segundo e a operação de descarga para o disco é realizada no arquivo de log, mas nada é feito em uma confirmação de transação.
    • 1: o buffer de log é gravado no arquivo de log a cada confirmação de transação e a operação de descarga no disco é realizada no arquivo de log.
    • 2: o buffer de log é gravado no arquivo a cada confirmação, mas a operação de descarga no disco não é realizada nele. No entanto, a descarga no arquivo de log ocorre uma vez por segundo.
    • Um valor de 0 é a escolha mais rápida, mas menos segura. Qualquer falha no processo mysqld pode apagar o último segundo das transações.
    • Um valor de 1 é a escolha mais segura porque, no caso de uma falha, você perde no máximo uma instrução ou transação do log binário. No entanto, também é a escolha mais lenta.
    • Um valor de 2 é mais rápido e seguro do que 0. Apenas uma falha do sistema operacional ou uma queda de energia pode apagar o último segundo das transações.
  • sync_binlog=1 or N

    Por padrão, o log binário não é sempre sincronizado com o disco. No caso de um travamento, a última instrução no log binário pode se perder.

    Para evitar esse problema, você pode usar a variável global sync_binlog (1 é o valor mais seguro, mas também o mais lento) para sincronizar o log binário com o disco após N grupos de confirmação de log binário.

Configurações recomendadas

Tabela 2 Configurações recomendadas

innodb_flush_log_at_trx_commit

sync_binlog

Descrição

1

1

Alta segurança de dados e forte capacidade de gravação em disco

1

0

Alta segurança de dados e capacidade de gravação de disco insuficiente. Atraso em espera ou nenhuma replicação é permitida.

2

0/N (0 < N < 100)

Baixa segurança dos dados. Uma pequena quantidade de perda de log de transação e atraso de replicação é permitida.

0

0

Capacidade limitada de gravação em disco. Nenhuma replicação ou atraso longo de replicação é permitido.

  • Quando ambos innodb_flush_log_at_trx_commit e sync_binlog são definidos como 1, a segurança é a mais alta, mas o desempenho de gravação é o mais baixo. No caso de uma falha, você perde no máximo uma instrução ou transação do log binário. Essa também é a opção mais lenta devido ao aumento do número de gravações em disco.
  • Quando sync_binlog é definido como N (N>1) e innodb_flush_log_at_trx_commit é definido como 2, a operação de gravação do RDS for MySQL alcança o desempenho ideal.