MySQL 5.1.34 no NFS com NetApp

4

Isso ainda é uma má idéia? Eu sei que versões mais antigas do MySQL tiveram um desempenho ruim com o NFS. Eu imagino que o problema esteja no uso de fsnc () e / ou O_DIRECT. Se os problemas são resolvidos na maior parte, existem armadilhas / armadilhas comuns, especificamente em torno de um banco de dados InnoDB grande (várias tabelas com dezenas de milhões de registros) que pode ver até 20-50 leituras / seg

    
por shrisha 23.06.2009 / 21:02

5 respostas

6

A primeira boa notícia para você é que agora há mais informações no etherspace do que você fez a mesma pergunta antes de um ano atrás. Eu sei disso por experiência amarga.

A linha oficial do Netapp é que o MySQL é suportado em todos os três protocolos.

ONTAP  MySQL Enterprise  NFS        iSCSI      FCP
7G     5.X               Supported  Supported  Supported
7G     4.X               Supported  Supported  Supported

MySQL Enterprise versions 4.X and 5.X are supported on all NetApp fabric
attached storage models running any release of Data ONTAP 7G for any server
platform supported by MySQL that is listed in the NetApp host compatibility
matrix for each protocol.

A segunda boa notícia é que você não disse MyISAM. Caso contrário, seria uma história muito diferente e obscura, consistindo em desempenho ruim e sem informações de apoio. Não há muita escolha, mas usar o iSCSI ou FCP baseado em bloco. Não que eles não funcionem muito bem, mas eles são um tipo de peixe um pouco diferente para os arquivos.

Em vez disso, a Netapp publicou alguns benchmarks de OLTP do MySQL 5.0 em todos os três protocolos de armazenamento. Os resultados indicam que os mecanismos InnoDB tiveram um bom desempenho e estão de acordo com as diferenças de protocolo observadas no Oracle. FCP saiu na frente em termos de taxa de transferência. Enquanto iSCSI foi de 9% e NFS 16% atrás de FCP. O que não é uma diferença tão significativa quanto esperávamos.

Ainda mais útil é que o mesmo documento detalha as etapas específicas do NFS e do InnoDB que eles tomaram para atingir esse valor de referência. Isso inclui a modificação de innodb_buffer_pool_size , innodb_flush_method , tempo limite de cache de atributo do NFS, no_atime_update no volume de origem e (como Richard diz acima) especificando diferentes pontos de montagem para logs.

Pessoalmente, eu não recomendaria armazenar os logs em um armazenamento diferente, como um disco local. Os logs estão intimamente relacionados a qualquer dado que já tenha passado para o disco. Se você separá-los completamente, então você pode estar se preparando para uma queda. Ainda mais se você deseja realizar snapshots, mude a máquina rodando o MySQL ou seus discos locais sejam menos confiáveis que o filer.

Com tudo isso dito, a próxima melhor coisa que você pode fazer é chupar e ver. Configure um ambiente com base nas melhores práticas do documento e realize alguns benchmarks com seus próprios dados. Avalie como ele funciona em comparação aos seus discos locais hoje.

-

NB: O primeiro link é AGORA restrito. Você não diz se já é um cliente da Netapp. Você deve poder ver o segundo link independentemente disso.

    
por 25.06.2009 / 11:10
1

O NFS4 seria melhor se você pudesse usá-lo. Eu pelo menos iria montar com noatime. Você também deve considerar a especificação de locais de arquivos de log em discos locais. Se você não tiver armazenamento local (como é comum em uma VM), pode tentar armazenar logs em um ponto de montagem que passe por uma interface de rede diferente do armazenamento principal.

    
por 25.06.2009 / 07:39
0

Pessoalmente, eu usaria o iSCSI em vez do NFS ao montar o disco de um NetApp para MySQL. Incrivelmente eficiente e você obtém acesso direto ao sistema de arquivos para o LUN.

    
por 25.06.2009 / 07:51
0

O desempenho de commit do MySQL InnoDB depende muito da rapidez com que o IO subjacente pode sincronizar dados para o disco; Isso é extremamente impactado pela latência da rede, então rodar o MySQL sobre o NFS terá um grande impacto, não importando o servidor. Mesmo que a sua rede seja o mais rápida possível, ainda é provável que seja muito mais lenta do que um disco local (suponho que o seu disco local seja um controlador de ataque com bateria aqui).

Por outro lado, o desempenho de leitura é baseado principalmente em quanto do banco de dados se encaixa no RAM. Se você pode ajustar todo o banco de dados na RAM (ou a maior parte dele, dependendo dos padrões de uso), então o desempenho será muito bom, já que você configurará seu innodb_buffer_pool para ser maior que os dados e, em teoria, nenhuma leitura será precisa ser feito no NFS.

    
por 25.06.2009 / 09:11
0

Desde que você não esteja usando o berkleydb, o MySQL / InnoDB funciona bem com o NFS. Não sei o que está escrito na documentação do Netapp NFS, mas se você montar o volume do NFS com a opção 'async', o aplicativo não será bloqueado aguardando que as gravações cheguem ao disco.

    
por 31.03.2010 / 19:01