É seguro definir innodb_flush_log_at_trx_commit=0?

É seguro definir innodb_flush_log_at_trx_commit=0?

Eu tenho um servidor (Dell PE2950) com cache de gravação alimentado por bateria no controlador RAID.

É seguro definir innodb_flush_log_at_trx_commit=0 em um servidor mysql com arquivos de dados armazenados em um volume raid0?

Haveria uma resposta diferente se o volume fosse raid1/5/10?

Obrigado!

Responder1

Se você está preocupado com a perda de dados, não é seguro. De acordo com o manual, uma transação pode ter sido confirmada, mas ainda não gravada no disco - estando apenas na memória. Isto significa que uma falha do mysqld ou do sistema operacional ou falha de energia pode causar perda de transações.

Em alguns sistemas, pode ser aceitável perder transações, desde que uma transação seja completamente perdida ou completamente mantida. Nesse caso, você pode desativar essa configuração.

A relevância do controlador RAID alimentado por bateria é o cache de gravação seguro no controlador. Se o controlador armazenasse gravações em cache, mas perdesse energia, sem bateria, os dados no cache de gravação seriam perdidos. Mas o MySQL já esperaria que isso estivesse seguro no disco. Portanto, a bateria permite o uso seguro do cache de gravação no controlador RAID. Normalmente, o controlador possui uma configuração para desabilitar o cache de gravação automaticamente se o nível da bateria estiver muito baixo.

O nível RAID não é diretamente relevante. Se os dados estiverem no disco, eles estão no disco. Se você perder energia, será seguro. Os níveis de RAID são importantes se um disco morrer - um modo de falha completamente diferente. No caso de RAID0, obviamente há perda instantânea de todos os dados. No caso do RAID5, você pode continuar com um grande impacto no desempenho. Com o RAID1/10 você pode continuar com um impacto muito pequeno no desempenho.

Mas não confunda RAID com backup. Existem dezenas de modos de falha para um servidor de banco de dados, e o RAID trata apenas um deles: falha de disco. Seu sistema de arquivos pode travar, você pode excluir dados acidentalmente, seus arquivos de dados podem quebrar devido a um bug obscuro do MySQL. Portanto, não se esqueça de manter backups de dados importantes usando o mysqldump. Nunca copie os arquivos de dados, a menos que o MySQL esteja parado, pois eles podem ser inconsistentes.

Responder2

Para segurança e desempenho, você deve ter innodb_flush_log_at_trx_commit=1 e RAID 10.

Saúde

informação relacionada