Quais são as respectivas vantagens / limitações do Amazon RDS vs. EC2 com MySQL? [fechadas]

132

Eu percebo algumas diferenças básicas entre os dois, ou seja,

  1. EC2 vai ser mais barato

  2. RDS eu não precisaria fazer manutenção

Além desses dois, existem vantagens em executar meu banco de dados a partir do RDS, em oposição a um servidor EC2 separado que atua como um servidor MySQL. Supondo tamanhos de instância semelhantes, os dois terão as mesmas limitações em termos de capacidade de lidar com uma carga?

Para fornecer um pouco mais de informações sobre o meu uso, eu tenho um banco de dados, nada muito grande ou nada (tabela maior com 1 milhão de linhas), apenas um volume SELECT alto.

Macgyver
fonte
Apenas adicionando no método de backup consistente ec2. alestic.com/2009/09/ec2-consistent-snapshot Eu uso essa ferramenta com um servidor de 300GB e cerca de 5.000 bancos de dados. Neste momento, com um volume de 3000 IOPS, são necessárias cerca de 1,2 horas para iniciar o mysql, pois ele começa com um desligamento impuro, portanto o mysql precisa varrer todas as tabelas.
precisa saber é o seguinte
Há uma duplicata entre sites em dba.stackexchange.com/questions/34525/… que obteve boas respostas.
Mark Amery

Respostas:

135

Esta é uma pergunta simples, com uma resposta muito complicada!

Em resumo: o EC2 fornecerá o desempenho máximo se você optar por um RAID0 EBS. Fazer o RAID0 EBS requer uma quantidade significativa de despesas gerais de manutenção, por exemplo:

http://alestic.com/2009/06/ec2-ebs-raid

http://alestic.com/2009/09/ec2-consistent-snapshot

O EC2 sem RAID0 EBS fornecerá um desempenho de E / S de baixa qualidade, portanto, nem é realmente uma opção.

O RDS fornecerá um desempenho muito bom (embora não máximo) pronto para uso. O console de gerenciamento é fantástico e é fácil atualizar instâncias. Escravos de alta disponibilidade e somente leitura estão a um clique de distância. É realmente incrível.

Resposta curta: Vá com o RDS. Ainda em cima do muro? Vá com RDS !!! se você gosta de dores de cabeça e afina todos os detalhes para obter o máximo desempenho, pode considerar o EC2 + EBS RAID 0. O Vanilla EC2 é uma opção terrível para a hospedagem MySQL.

efalcao
fonte
1
Boa resposta. Este é exatamente o que eu quero: aws.typepad.com/aws/2010/10/... - Thanks for me levando na direção certa
Macgyver
Boa resposta. Como você lida com o tempo de inatividade de 4 horas por semana?
Tihom 26/01
8
Uma coisa que é importante saber sobre a janela de manutenção de 4 horas é que o servidor não fica inativo por 4 horas por semana! É justamente quando eles fazem manutenção, se houver manutenção a ser feita. Eu tenho servidores RDS em execução há meses e meses com zero tempo de inatividade.
efalcao 28/01
2
Tivemos servidores RDS em execução por ANOS com zero tempo de inatividade. Uma grande interrupção (cerca de 6 horas) uma vez, tudo voltou ao normal assim que a AWS se resolveu. (Devo salientar que essa era uma instância multi-AZ, mas não conseguiu efetuar o failover no backup).
cjm2671
1
@ paulkon - não fazemos failover para réplicas externas, usamos o failover do RDS; caso contrário, a promoção etc volta ao novo mestre se tornaria complicado. As réplicas externas são principalmente para DR de backup fora da nuvem, bem como para divisão de leitura / gravação em ambientes de relatório (nosso nível de aplicativo está ciente deles). HTH
Ross
24

Em este post , há uma excelente referência entre:

  • Executando o MySql em um pequeno EC2 + EBS
  • Executando o MySql em um pequeno EC2 + EBS + parâmetros MySql ajustados
  • Um pequeno RDS

O benchmark é muito bom, pois não é focado apenas nas condições ideais (apenas um thread), mas também em cenários mais realistas, com 50 threads atingindo o banco de dados.

Andres
fonte
2
É bom para publicar benchmarks, mas de boa fé o autor admitiu no final ele não devidamente sintonia Innodb (O grande param à mudança é, naturalmente, innodb_buffer_pool_size .... que ele não o fez)
phil_w
12

O RDS não é realmente um sistema de alta disponibilidade. Leia as letras miúdas no FAQ do RDS. Durante um evento de failover, pode levar até 3 minutos para o failover. A Amazon adicional decidirá que precisa "atualizar" sua instância rds e fará um failover nesse ponto, o que reduzirá o banco de dados por "até 3 minutos" (nossa experiência é que pode demorar mais do que isso).

A alta disponibilidade do RDS é muito diferente da replicação mestre - mestre ou mestre - escravo e é muito mais lenta. Eles não usam replicação mysql, mas usam algum tipo de replicação ebs. Portanto, em uma situação de failover, ele montará os ebs na máquina de backup, iniciará o mysql, esperará o mysql recuperar a falha (espero que nada tenha sido corrompido muito ruim) e faça um switch dns.

Espero que isso ajude você na sua avaliação.

Jeff Whiting
fonte
1
adicionar um escravo de leitura em um db com dados de 40gb levou mais de 20 minutos para mim. Isso, e o custo e a falta de leitura de escravos em ec2 e / ou fora do local, indisponíveis, é praticamente um começo para mim. Eu diria que o RDS é bom para pequenas lojas que não precisam de tempos de resposta reais de alta disponibilidade e failover. É mais para eliminar um DBA do que qualquer coisa IMHO.
Ross
Boas notícias aqui (mar 2020). Com o Aurora, as coisas ficaram muito melhores. Ele ainda não roda um sistema mestre - escravo, mas porque eles criaram um novo failover do sistema de armazenamento "baseado em nuvem" agora é muito rápido. Também fornece instantâneos e backups rápidos. O Aurora realmente resolveu muitas das deficiências do RDS MySQL.
Jeff Whiting
6

Optamos por usar instâncias do EC2 MySQL porque temos um alto volume de leitura e precisamos de replicação mestre-escravo. Obviamente, você pode ativar várias instâncias do RDS e configurar a replicação do MySQL entre elas, mas usamos o Scalr.net, que gerencia isso para você usando instâncias do EC2.

Basicamente, apenas dizemos ao Scalr quantas instâncias do MySQL queremos, as mantém, automatiza a configuração da replicação, lida com failover automático da promoção de escravos para dominar se o mestre for finalizado etc. Ele faz backups de despejo de SQL e instantâneos de volume EBS de O mestre. Portanto, quando ele precisa criar um novo escravo, ele monta temporariamente automaticamente um volume EBS do último instantâneo mestre para inicializar o banco de dados escravo e inicia a replicação a partir do ponto apropriado. Todos apontam e clicam :) (e não, eu não trabalho para o Scalr ou algo assim. O Scalr está disponível como código aberto se você não quiser usar o serviço deles)

DavidJ
fonte
Observe que desde que eu publiquei a resposta acima, a Amazon introduziu suporte explícito à réplica de leitura para instâncias RDS (atualmente apenas no MySQL).
precisa saber é o seguinte
5

Em relação à questão da janela de manutenção. Se você usar o Multi-AZ, o RDS criará uma réplica em espera em outra zona de disponibilidade, para que não haja tempo de inatividade para manutenção e você se proteja contra uma falha na zona.

É isso que pretendo fazer na próxima semana. É claro que isso vai te custar mais, mas ainda não resolvi isso.

canela
fonte
4

MySQL no EC2 vs RDS MySQL

Vantagens do MySQL na replicação entre regiões do EC2 Amazon EC2

Copiar instantâneos nas regiões do Amazon EC2

RAID 0 com distribuição de EBS no MySQL EC2

Mais de 3 TB de espaço em disco (você não precisará disso para o seu tamanho) pode ser anexado no MySQL no EC2.

Desvantagens do MySQL no EC2

Configuração, Monitoramento e Manutenção em comparação com o RDS

Backups pontuais disponíveis no RDS

IOPS menor que o RDS MySQL (mesmo depois do RAID 0) atualmente, 10800 com 6 discos para MySQL no EC2, enquanto 12500 IOPS 16KB no RDS MySQL

Harish Ganesan
fonte
4

Estou testando o RDS há alguns meses e aqui estão alguns problemas que tenho:

  1. Usar o SQL Profiler é complicado. Como você não pode conectar o criador de perfil diretamente ao servidor, é necessário executar alguns procedimentos armazenados para criar um arquivo de log que possa ser analisado. Enquanto eles oferecem algumas sugestões sobre como isso é feito, está longe de ser fácil de usar. Eu recomendaria apenas que você tenha um profissional SQL certificado para fazer esse tipo de trabalho.

  2. enquanto a Amazon faz backup de sua instância, você não pode restaurar um banco de dados individual. Eu tenho um aplicativo Web com vários bancos de dados específicos do cliente separados e minha solução foi iniciar uma instância do EC2 com o SQL em execução para conectar-se ao banco de dados RDB de produção e importar os dados e fazer backup na instância do EC2. A outra solução foi usar uma ferramenta de terceiros que cria um script SQL massivo (no servidor de aplicativos) que recriará o esquema e preencherá os dados de volta ao ponto de restauração.

Incontável
fonte
1

Eu tive a mesma pergunta neste fim de semana. Há uma janela de tempo de inatividade de 4 horas por semana para o RDS, onde eles fazem manutenção. O RDS parecia mais caro se você pudesse se safar de uma micro instância do EC2. (Isso ocorre com instâncias de teste com tráfego mínimo). Também não foi possível alterar o fuso horário da instância do RDS porque não tenho permissão.

Agora, na verdade, estou olhando para http://xeround.com/, que é mysql no EC2 por outra empresa. Eles não usam o InnoDB, mas têm seu próprio mecanismo chamado IDG. Estou apenas começando a investigar isso, mas eles estão em beta e fornecerão 500 MB de espaço.

Tihom
fonte
Observe que a janela de manutenção não fica inativa toda semana; é o momento em que qualquer manutenção seria feita, se fosse necessária: aws.amazon.com/rds/faqs/#12 Veja também o comentário de @ efalcao em sua resposta acima.
mpdaugherty
Parece muito legal, mas realmente $$ se você tiver qualquer quantidade de dados em xeround.com
csharp4me