Mestre - Escravo Configuração do MySQL em um VMWare Cloud - É necessário?

3

Atualmente, estamos na fase de pesquisa da construção de um banco de dados "Mestre" para nossos negócios de comércio eletrônico que centralizará todos os dados, incluindo informações sobre produtos, informações de fornecedores, informações do Magento, Amazon etc. ambos "hardware físico" (Duas máquinas RAID 5, mestre / escravo, com um backup HDD do escravo - e um servidor de aplicativos separado) .... Ou poderíamos fazer um sistema "baseado na nuvem".

O cerne da pergunta é: existe algum benefício em replicar em uma nuvem? O ponto principal de uma nuvem é a escalabilidade e "nenhum tempo de inatividade de hardware", portanto, nenhum dado perdido devido a hardware ruim. A perda de dados que ocorreria, se houver, em um sistema baseado em nuvem seria baseada em software. Com isso dito, sendo um problema baseado em software que causaria perda de dados, esse problema provavelmente seria replicado corretamente? Portanto, teríamos duas máquinas com os mesmos dados corrompidos?

Estamos tentando analisar o custo / benefício de ambas as soluções. É claro que, se não houver benefício em replicar em uma nuvem, os benefícios que a nuvem tem a oferecer compensam a solução de hardware. No entanto, se uma solução replicada na nuvem for uma opção melhor, a solução de hardware será muito menos dispendiosa, incluindo o tempo de gerenciamento físico.

Alguém tem alguma experiência ou insights aqui?

    
por Zak 07.12.2012 / 01:12

5 respostas

6

A coisa mais importante a se lembrar sobre máquinas virtuais (que é essencialmente o que você obterá de um fornecedor de 'nuvem') é que nada de mágico aconteceu só porque alguém disse 'Virtual'. Ou 'Cloud'.

Você ainda precisa planejar e testar a alta disponibilidade, em vez de apenas assumir que funcionará. Você ainda precisa se preocupar com a corrupção de dados sendo gravada em réplicas etc.

Essencialmente, tudo o que você estaria recebendo da nuvem é menos visibilidade da plataforma - é tentador ver isso como menos responsabilidade, mas se sua empresa precisa dos recursos da nuvem e não está disponível (por exemplo, imagine uma nova York com base em um servidor no local e failover de nuvem para um datacenter de Nova Jersey há alguns meses), então, ser capaz de apontar para um fornecedor de nuvem e dizer "a culpa é sua" não ajuda seu site a retomar pedidos mais rapidamente.

Os computadores ainda quebram, mesmo aqueles que executam "nuvens".

Isso não quer dizer que você não deveria fazer isso. Existem benefícios para ter uma réplica fora do site pronta para entrar em ação se você tiver problemas, e são benefícios para mover toda a infraestrutura para um provedor de nuvem, então ambas as abordagens é válido. Você só precisa ter clareza sobre o que exatamente você está comprando (você não está comprando alguma "nuvem", você está comprando um serviço e precisa saber exatamente quais serviços você terá e qual SLA eles serão em.)

    
por 07.12.2012 / 22:18
3

É importante esclarecer alguns pontos aqui:

  • Algumas arquiteturas de nuvem podem fornecer 'sem tempo de inatividade para manutenção programada' - a partir do uso do VMotion e similares.

  • Sistemas executados com VMWare Fault Tolerance ou similar podem fornecer resistência a falhas inesperadas de hardware, mas há limites significativos para a configuração (com o VMWare FT, as VMs protegidas podem ter apenas um núcleo de CPU).

  • Nenhum dos dois é automático apenas porque você comprou algo chamado 'Cloud'.

Assim, para escalabilidade, você provavelmente desejará ir com a replicação mestre / escravo; isso funciona tão bem em uma configuração de nuvem quanto em uma configuração de hardware dedicada.

Como os bancos de dados são particularmente sensíveis ao desempenho do disco, convém ter certeza de que você entende as opções de IO QoS e a taxa de excesso de assinaturas do seu provedor de nuvem.

    
por 07.12.2012 / 01:39
2

Ponto de vista do RAID5

Embora alguns considerem o RAID5 como uma solução de redundância de disco do homem pobre, para sua própria segurança e sanidade, por favor, livre-se do RAID5 o mais rápido possível. Por que ???

  • Em um ambiente de pouca gravação e leitura pesada em um RAID5, eu apenas deixaria isso para
    • Seu orçamento
    • Sua tolerância
    • Sua pressão arterial
  • Em um ambiente de leitura pesada, leitura baixa ou gravação pesada, o RAID5 está fora de questão . Isto é especialmente verdade para o InnoDB.

Agora vamos discutir InnoDB e MyISAM

InnoDB

Se você não usar innodb_file_per_table , OMG toda a atividade seria centrada em torno de apenas um arquivo, ibdata1. O que está contido no ibdata1 do InnoDB?

  • Páginas de dados de tabela
  • Índice de páginas de tabela
  • Metadados de tabela para gerenciar IDs do TableSpace
  • Dados MVCC (para conformidade com conformidade e transação de ACID)

Mesmo as leituras no InnoDB tendem a encobrir linhas com proteção MVCC para permitir leituras repetitivas e permitir que as transações atinjam as mesmas linhas que estão sendo lidas. Assim, as leituras, assim como as gravações, produzem E / S de disco em ibdata1.

O uso de innodb_file_per_table pode aliviar parte da E / S do disco, separando as páginas Table Data e Index de ibdata1 em .ibd files. No entanto, eu esperaria uma melhoria notável de desempenho apenas por um tempo limitado em um ambiente RAID5. A interação da tabela ainda é um pouco a mesma. Todo acesso a um arquivo .ibd é sempre precedido por verificações de referência em relação ao ibdata1.

Embora a separação possa trazer mudanças significativas no desempenho, o RAID5 seria o que eles chamam no mundo da química, um reagente limitante. Quaisquer benefícios esperados das mudanças de layout do InnoDB seriam neutralizados por fatores externos, como o RAID5. A presença de arquivos de espaço de tabela extras devido a innodb_file_per_table não compra nada ao longo do tempo, mas apenas a presença de arquivos extras de espaço de tabela.

MyISAM

Quando se trata de MyISAM, o RAID5 é OK em um ambiente de pouca gravação e leitura , desde que você mapeie todas as tabelas temporárias (usando tmpdir ) para outro disco, separado do RAID5 . (Soa como derrotar o propósito do RAID5, hein?)

Lembre-se de que as páginas de dados da tabela estão em .MYD files e suas páginas de índice correspondentes estão em .MYI files. Um ambiente de gravação pesada (INSERTs, UPDATEs, DELETEs) obrigará o RAID5 a atrasar as coisas. Dado o comportamento de bloqueio do MyISAM (bloqueio total de tabela com cada INSERT, UPDATE e DELETE) em um ambiente de gravação pesada, um fluxo constante de DML manterá o RAID5 bastante ocupado e fará com que os usuários de DB entrem em um tempo breve mas irritante esperando por DML para completar.

Conclusão sobre o RAID5

Sob o capô, o RAID5 tem as seguintes características para escrever com paridade

  • Leia o bloco de dados antigo
  • Leia o antigo bloco de paridade
  • Compare o bloco de dados antigo com a solicitação de gravação. Para cada bit que foi invertido (alterado de 0 para 1, ou de 1 para 0) no bloco de dados, inverta o bit correspondente no bloco de paridade
  • Escreva o novo bloco de dados
  • Escreva o novo bloco de paridade

Se qualquer uma dessas etapas exibir a menor intermitência, o conjunto RAID5 entrará em uma distorção de tempo breve, mas incômoda. Multiplique isso por um grande número de gravações e você a sentirá no desempenho do banco de dados. Cada uma dessas etapas pode ser um ponto de falha. Por quê?

De acordo com a Wikipédia sobre o RAID5

In the event of a system failure while there are active writes, the parity of a stripe may become inconsistent with the data. If this is not detected and repaired before a disk or block fails, data loss may ensue as incorrect parity will be used to reconstruct the missing block in that stripe. This potential vulnerability is sometimes known as the write hole. Battery-backed cache and similar techniques are commonly used to reduce the window of opportunity for this to occur.

RECOMENDAÇÃO (RAID5)

O RAID10 não apenas fornece estabilidade, mas permite uma certa margem de manobra na manutenção do disco, sem precisar baixar o mysql na maioria dos casos. Quando os dados são espelhados, você sabe para onde os dados estão indo e você sabe de onde os dados estão sendo lidos.

Eu diria que vá com o RAID10. A menos que você não se importe com longos períodos de inatividade, você não poderá fazer a manutenção do disco RAID5 em vez da necessária sincronização de disco. Na verdade, quanto menores forem os discos que você distribui no RAID10, mais rápido será o tempo de sincronização após a manutenção do disco RAID 10.

Outras coisas a serem consideradas

  • Ajustar suas consultas
  • Remover índices redundantes
  • Armazene o máximo de dados possível
  • Use índices de cobertura com sabedoria

VMWare Viewpoint

Em relação ao mestre e ao escravo no VMWare, certifique-se de que o mestre e o escravo estejam em discos físicos separados. Se os discos no VMWare forem RAID5, por favor, obtenha outro Cluster VMWare agora mesmo usando o RAID10.

    
por 07.12.2012 / 21:52
0

Se você deseja confiabilidade, escolha RAID 10 e não RAID 5 e a configuração mestre / escravo (o RAID 10 oferece desempenho e confiabilidade). Eu duvido que você possa obter o desempenho de IO do servidor físico (RAID 10) com qualquer provedor de nuvem. O uso da nuvem é muito útil quando sua carga / tráfego não é consistente ou se você tem picos de tráfego de 2 a 3 vezes por dia. Nesses casos, você cria novas instâncias do servidor da Web e do banco de dados e as descarta quando o tráfego é normal.

Faça backup de seus dados regularmente, esteja na nuvem, no servidor físico com RAID 10 / RAID 5 ou replicação mestre / escravo. E, o mais importante, teste a integridade de seus backups com frequência.

    
por 07.12.2012 / 06:46
0

The whole point of a cloud is scalability and "no hardware downtime" therefore no lost data due to bad hardware.

Você entende que "The Cloud" é apenas um servidor normal executando sistemas operacionais virtualizados. Isso pode e sofre mais (geralmente muito mais) downtime e perda de dados do que um servidor dedicado normal.

We currently are in the research phase of building a "Master" database for our e-commerce business

Este empreendimento é apenas para o banco de dados da sua loja Magento - ou para alguma implementação mais ampla do ERP?

Se for o primeiro, comece a pesquisar novamente. O Magento não é limitado pelo seu DB - você vai encontrar muitos outros gargalos antes que o MySQL se torne uma preocupação. Isto é, se você não localizar seu servidor MySQL em um VPS "Cloud" distante conectado por uma conexão WAN de baixa largura de banda, mal roteada, altamente congestionada e altamente disputada.

Eu vi mais perda de dados e armazenamento não confiável de tentativas de bricolage em alta disponibilidade - do que com uma solução simples de servidor único.

Olhando para o seu outra pergunta . Você está gastando $ 14k por ano em uma licença Magento EE - mas tentando gerenciar seu próprio servidor?

Há uma boa razão para que os provedores de hospedagem especializados em Magento existam - e isso para evitar que você gaste e, potencialmente, perca uma pequena fortuna tomando as decisões erradas tentando fazer bricolagem. Você deve se concentrar em administrar sua loja e fazer o que você é bom - não tentando ser um administrador de sistema.

    
por 02.02.2013 / 02:17