Quels sont les avantages / limitations respectifs d'Amazon RDS par rapport à EC2 avec MySQL? [fermé]

132

Je réalise quelques différences fondamentales entre les deux, à savoir

  1. EC2 va être moins cher

  2. RDS je n'aurais pas à faire de maintenance

À part ces deux-là, il y a des avantages à exécuter ma base de données à partir de RDS par rapport à un serveur EC2 séparé agissant comme un serveur MySQL. En supposant des tailles d'instance similaires, les deux vont-ils rencontrer les mêmes limitations en termes de capacité à gérer une charge?

Pour vous donner un peu plus d'informations sur mon utilisation, j'ai une base de données, rien de trop gros ou quoi que ce soit (la plus grande table 1 million de lignes), juste un volume SELECT élevé.

Macgyver
la source
Il suffit d'ajouter une méthode de sauvegarde cohérente ec2. alestic.com/2009/09/ec2-consistent-snapshot J'utilise cet outil avec un serveur de 300 Go et environ 5 000 bases de données. Pour le moment, avec un volume de 3000 IOPS, il faut environ 1,2 heure pour démarrer mysql car il démarre à partir d'un arrêt impur, donc mysql doit analyser chaque table.
jozwikjp
Il y a un doublon intersite sur dba.stackexchange.com/questions/34525/… qui a obtenu de bonnes réponses.
Mark Amery

Réponses:

135

C'est une question simple avec une réponse très compliquée!

En bref: EC2 fournira des performances maximales si vous optez pour un RAID0 EBS. Faire RAID0 EBS nécessite une charge de maintenance assez importante, par exemple:

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

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

EC2 sans RAID0 EBS fournira des performances d'E / S merdiques, donc ce n'est même pas vraiment une option.

RDS fournira de très bonnes performances (mais pas maximales) hors de la boîte. La console de gestion est fantastique et il est facile de mettre à niveau les instances. La haute disponibilité et les esclaves en lecture seule sont à portée de clic. C'est vraiment génial.

Réponse courte: optez pour RDS. Toujours sur la clôture? Allez avec RDS !!! si vous aimez les maux de tête et régler le moindre petit peu pour des performances maximales, alors vous pouvez envisager EC2 + EBS RAID 0. Vanilla EC2 est une option terrible pour l'hébergement MySQL.

efalcao
la source
1
Bonne réponse. C'est EXACTEMENT ce que je veux: aws.typepad.com/aws/2010/10/… - Merci de m'avoir conduit dans la bonne direction
Macgyver
Bonne réponse. Comment gérez-vous le temps d'arrêt de 4 heures par semaine?
Tihom
8
Une chose qu'il est important de savoir sur la fenêtre de maintenance de 4 heures est que votre serveur n'est pas en panne pendant 4 heures par semaine! C'est juste à ce moment-là qu'ils feront la maintenance SI il y a de la maintenance à faire. J'ai eu des serveurs RDS fonctionnant pendant des mois et des mois sans temps d'arrêt.
efalcao
2
Nous avons des serveurs RDS fonctionnant pendant des années sans temps d'arrêt. Une panne majeure (environ 6 heures) une fois, tout est revenu à la normale une fois qu'AWS s'est réglé. (Je dois souligner qu'il s'agissait d'une instance multi-AZ mais qu'elle n'a pas réussi à basculer vers la sauvegarde).
cjm2671
1
@paulkon - nous ne basculons pas vers les réplicas hors site, nous utilisons le basculement RDS, sinon la promotion, etc. vers un nouveau maître deviendrait délicate. Les réplicas hors site sont principalement destinés à la reprise après sinistre hors cloud ainsi qu'au fractionnement lecture / écriture pour les environnements de reporting (notre niveau d'application en est conscient). HTH
Ross
24

Dans cet article, il y a un excellent point de repère entre:

  • Exécution de MySql sur un petit EC2 + EBS
  • Exécution de MySql sur un petit EC2 + EBS + paramètres MySql ajustés
  • Un petit RDS

Le benchmark est très bon car il ne se concentre pas seulement dans des conditions idéales (un seul thread) mais aussi dans des scénarios plus réalistes, avec 50 threads atteignant la base de données.

Andrés
la source
2
C'est bien de publier des benchmarks, mais de bonne foi l'auteur a admis à la fin qu'il n'avait pas correctement réglé Innodb (le gros paramètre à changer est bien sûr innodb_buffer_pool_size .... ce qu'il n'a pas fait)
phil_w
12

RDS n'est pas vraiment un système à haute disponibilité. Lisez les petits caractères dans la FAQ RDS. Lors d'un événement de basculement, le basculement peut prendre jusqu'à 3 minutes. Amazon supplémentaire décidera qu'il a besoin de «mettre à niveau» votre instance rds et de faire un basculement à ce moment-là, ce qui arrêtera votre base de données pendant «jusqu'à 3 minutes» (notre expérience est que cela peut prendre plus de temps).

La haute disponibilité RDS est très différente de la réplication maître-maître ou maître-esclave et est beaucoup plus lente. Ils n'utilisent pas la réplication mysql mais utilisent une sorte de réplication ebs. Donc, dans une situation de basculement, il montera l'ebs sur la machine de sauvegarde, démarrera mysql, attendra que mysql effectue une récupération après échec (avec un peu de chance, rien n'a été trop corrompu), puis effectuera un changement DNS.

J'espère que cela vous aidera dans votre évaluation.

Jeff Whiting
la source
1
l'ajout d'un esclave de lecture sur une base de données avec 40 Go de données a pris plus de 20 minutes pour moi. Ceci et le coût et le manque d'esclaves de lecture dans ec2 régulier et / ou hors site ne sont pas disponibles pour moi. Je dirais que RDS est bon pour les petits magasins qui n'ont pas besoin de véritables temps de réponse de haute disponibilité et de basculement. C'est plus pour éliminer un DBA que quoi que ce soit à mon humble avis.
Ross
Bonne nouvelle ici (mars 2020). Avec Aurora, les choses se sont beaucoup améliorées. Il ne fait toujours pas fonctionner un système maître-esclave, mais parce qu'ils ont créé un nouveau système de stockage "basé sur le cloud", le basculement est maintenant très rapide. Il fournit également des instantanés et des sauvegardes rapides. Aurora a vraiment corrigé de nombreuses lacunes de RDS MySQL.
Jeff Whiting
6

Nous avons choisi d'utiliser des instances EC2 MySQL car nous avons un volume de lecture élevé et avons besoin d'une réplication maître-esclave. Bien sûr, vous pouvez lancer plusieurs instances RDS et configurer vous-même la réplication MySQL entre elles, mais nous utilisons Scalr.net, qui gère cela pour vous à l'aide d'instances EC2.

Fondamentalement, nous disons simplement à Scalr combien d'instances MySQL nous voulons qu'il les maintienne, automatise la configuration de la réplication, gère le basculement automatique de la promotion de l'esclave vers le maître si le maître est arrêté, etc. le maître. Ainsi, lorsqu'il a besoin de créer un nouvel esclave, il monte automatiquement temporairement un volume EBS du dernier instantané maître pour initialiser le DB esclave, puis démarre la réplication à partir du point approprié. Tous pointez et cliquez :) (et non, je ne travaille pas pour Scalr ou quoi que ce soit. Scalr est disponible en Open Source si vous ne souhaitez pas utiliser leur service)

DavidJ
la source
Notez que depuis que j'ai publié la réponse ci-dessus, Amazon a introduit la prise en charge explicite des répliques en lecture pour les instances RDS (actuellement MySQL uniquement).
DavidJ
5

Concernant la question de la fenêtre de maintenance. Si vous utilisez Multi-AZ, RDS créera un réplica de secours dans une autre zone de disponibilité afin qu'il n'y ait pas de temps d'arrêt pour la maintenance et que vous vous protégiez contre une défaillance de zone.

C'est ce que je prévois de faire dans la semaine prochaine. Bien sûr, cela vous coûtera plus cher mais je n'ai pas encore travaillé sur ce point.

Tibia
la source
4

MySQL sur EC2 vs RDS MySQL

Avantages de MySQL sur EC2 Réplication interrégionale Amazon EC2

Copier des instantanés dans les régions Amazon EC2

RAID 0 avec striping EBS dans MySQL EC2

Plus de 3 To d'espace disque (vous n'en aurez pas besoin pour votre taille) peuvent être attachés sur MySQL sur EC2.

Inconvénients de MySQL sur EC2

Configuration, surveillance et maintenance par rapport au RDS

Sauvegardes ponctuelles disponibles dans RDS

IOPS inférieurs à RDS MySQL (même après RAID 0) actuellement, 10800 avec 6 disques pour MySQL sur EC2 alors que 12500 IOPS 16KB sur RDS MySQL

Harish Ganesan
la source
4

J'essaye RDS depuis quelques mois et voici quelques problèmes que j'ai:

  1. L'utilisation du profileur SQL est délicate. Étant donné que vous ne pouvez pas connecter le profileur directement au serveur, vous devez exécuter certaines procédures stockées pour créer un fichier journal que vous pouvez analyser. Bien qu'ils offrent quelques suggestions sur la façon dont cela est fait, c'est loin d'être convivial. Je recommanderais seulement que vous ayez un professionnel SQL certifié pour ce genre de travail.

  2. tandis qu'Amazon sauvegarde votre instance, vous ne pouvez pas restaurer une base de données individuelle. J'ai une application Web avec plusieurs bases de données spécifiques au client et ma solution consistait à lancer une instance EC2 avec SQL en cours d'exécution pour l'attacher à la base de données RDB de production et importer les données, puis les sauvegarder sur l'instance EC2. L'autre solution consistait à utiliser un outil tiers qui crée un script SQL massif (sur le serveur d'application) qui recréera le schéma et remplira les données vers un point de restauration.

Eccountable
la source
1

J'ai eu la même question ce week-end. Il y a une fenêtre de temps d'arrêt de 4 heures par semaine pour RDS où ils effectuent la maintenance. RDS semble plus cher si vous pouvez vous en tirer avec une micro instance d'EC2. (Ceci est vrai pour les instances de test qui ont un trafic minimum) Je n'ai pas non plus été en mesure de modifier le fuseau horaire de l'instance RDS car je n'ai pas l'autorisation.

Je suis maintenant en train de regarder http://xeround.com/ qui est mysql sur EC2 par une autre société. Ils n'utilisent pas InnoDB, mais ont leur propre moteur appelé IDG. Je commence juste à enquêter sur cela, mais ils sont en version BETA et donneront 500 Mo d'espace.

Tihom
la source
Notez que la fenêtre de maintenance n'est pas une interruption hebdomadaire; c'est juste le moment où une maintenance serait effectuée si elle était nécessaire: aws.amazon.com/rds/faqs/#12 Voir également le commentaire de @ efalcao sur sa réponse ci-dessus.
mpdaugherty le
Ça a l'air vraiment cool mais vraiment $$ si vous avez une quantité de données sur xeround.com
csharp4me