Garantindo propriedades ACID para bancos de dados InnoDB

4

Quais etapas devem ser tomadas para garantir que um servidor InnoDB configurado de outra maneira seja realmente compatível com ACID? A página de configuração do InnoDB menciona que o hardware em si deve ser configurado para honrar fsync de chamadas, ou seja, desabilitar caches de write-back.

Esta página menciona algumas outras preocupações, mas pode estar confundindo o log binário com o log do InnoDB, e pode ser um pouco desatualizado em relação às configurações padrão do MySQL 5.x.

Ao ler a página do documento de log binário , parece que o " sync_binlog = 1 "configuração não é necessária para propriedades ACID em geral, apenas para propriedades ACID em relação a recuperação e replicação point-in-time.

Então, desativar o cache de discos write-back é suficiente ou existem outras configurações que precisam ser ajustadas?

    
por plinehan 27.07.2010 / 00:13

2 respostas

2

Você faz uma pergunta difícil. Aqui estão as configurações no MySQL:

  • sync-frm
  • sync-binlog
  • innodb-flush-log-at-trx-commit = 1 (padrão)
  • innodb_support_xa = 1 (padrão)
  • innodb_doublewrite = 1 (padrão)
  • sync-relay-log = 1 (se for um escravo)
  • rpl_transaction_enabled = 1 (se um escravo - somente no servidor 5.5 / Percona)

E no sistema operacional / sistema de arquivos / etc:

  • Desative todos os caches não suportados por bateria em discos ou controladores de raid.
  • Verifique se o sistema operacional não está em nenhum modo de laptop, etc.
por 29.10.2010 / 01:58
1

Desabilitar o write-back não necessariamente irá quebrar o ACID. Isso não acontecerá se você tiver cache de gravação com bateria no seu controlador RAID e a recompensa por isso é um grande aumento na capacidade de gravação. Algo para se ter cuidado, porém, é que alguns discos rígidos e SSDs (por exemplo, Intel X-25) têm seus próprios caches de write back que não são suportados por bateria, mesmo se o seu controlador RAID é e eles definitivamente precisam de desativação. A configuração de O_DIRECT também manterá seu SO e sistema de arquivos fora do caminho e permitirá que o controlador RAID faça as coisas de maneira mais eficiente.

Eu normalmente uso essas configurações para uma confiabilidade razoável:

innodb_flush_method=O_DIRECT
innodb_support_xa = 1
innodb-flush-log-at-trx-commit  = 2
    
por 04.10.2010 / 19:56