mysql sync_binlog

1

Foi-me dito que na sincronização do mysql para garantir que tudo está sendo replicado e os dados são seguros, a configuração syn_binlog (no my.conf) deve ser definida como 1.

Apenas isso mata o desempenho, qual é a melhor maneira de resolver isso?

Eu também li que esta é principalmente a causa do sistema de arquivos ext3 no linux. é seguro definir sync_binlog como 0?

Basicamente, a verdadeira questão é: você precisa ativar sync_binlog se não quiser perder dados?

    
por Cecil Zorg 21.09.2010 / 13:09

1 resposta

1

O impacto no desempenho é o custo da busca e da gravação adicionais. sync_binlog = 1 basicamente informa ao MySQL quantas gravações de log binário são armazenadas no buffer antes de liberar as gravações de log no disco. Se estiver definido como 1, toda gravação será liberada. 0 diz ao MySQL para deixar o sistema de arquivos lidar com isso. Portanto, se você tiver uma falha de disco, poderá perder um número indeterminado de gravações de log binário que fazem parte da última transação.

Dependendo da sua configuração de armazenamento (SAN com cache protegido por bateria, unidades conectadas diretamente, etc.), uma configuração de 0 pode ser segura ou não. Quanta perda de dados você e seu aplicativo podem tolerar?

para citar a referência do MySQL:

The default value of sync_binlog is 0, which does no synchronizing to disk. A value of 1 is the safest choice because in the event of a crash you lose at most one statement or transaction from the binary log. However, it is also the slowest choice (unless the disk has a battery-backed cache, which makes synchronization very fast).

    
por 21.09.2010 / 17:15