Quels sont les avantages / limitations respectives d'Amazon RDS par rapport à EC2 avec MySQL?
Je réalise quelques différences fondamentales entre les deux, c.-à-d.
EC2 va être moins cher
RDS je n'aurais pas à faire de maintenance
En dehors de ces deux solutions, l’exécution de ma base de données à partir de RDS présente-t-elle un avantage par rapport à un serveur EC2 distinct faisant office de serveur MySQL? En supposant des tailles d'instance similaires, les deux vont-ils rencontrer les mêmes limites 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 (plus grande table, 1 million de lignes), juste un volume de SELECT élevé.
C'est une question simple avec une réponse très compliquée!
En bref: EC2 fournira des performances maximales si vous utilisez un RAID0 EBS. Faire RAID0 EBS nécessite une quantité considérable de temps d’entretien, 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 de merde, ce n'est donc pas vraiment une option.
RDS fournira de très bonnes performances (mais pas maximales) prêtes à l'emploi. La console de gestion est fantastique et il est facile de mettre à niveau des instances. La disponibilité élevée 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 que vous optimisez chaque dernier geste pour obtenir des performances maximales, vous pouvez alors envisager le RAID 0 EC2 + EBS. Vanilla EC2 est une très mauvaise option pour l'hébergement MySQL.
Dans cet article , il existe un excellent point de repère entre:
- Exécuter MySql sur un petit EC2 + EBS
- Exécuter MySql sur un petit EC2 + EBS + paramètres ajustés MySql
- Un petit RDS
Le benchmark est très bon car il ne se concentre pas uniquement sur des conditions idéales (un seul thread), mais aussi dans des scénarios plus réalistes, 50 threads atteignant la base de données.
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. De plus, Amazon décidera de la nécessité de "mettre à niveau" votre instance rds et d'effectuer un basculement à ce moment-là, ce qui aura pour effet de ralentir votre base de données pendant "jusqu'à 3 minutes" (notre expérience montre que cela peut prendre plus de temps que cela).
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 les ebs sur la machine de sauvegarde, démarrera mysql, attendra que mysql se charge de la récupération après échec (j'espère que rien ne sera trop endommagé), puis effectuera un commutateur DNS.
J'espère que cela vous aide avec votre évaluation.
Nous avons choisi d'utiliser les instances MySQL EC2 car nous avons un volume de lecture élevé et avons besoin d'une réplication maître-esclave. Bien sûr, vous pouvez créer plusieurs instances RDS et configurer vous-même la réplication MySQL, mais nous utilisons Scalr.net, qui gère cela pour vous à l'aide d'instances EC2.
Fondamentalement, nous indiquons simplement à Scalr le nombre d'instances MySQL que nous voulons, qu'il les conserve, automatise la configuration de la réplication, gère le basculement automatique de la promotion des esclaves vers le maître si le maître se termine, etc. le maître. Ainsi, lorsqu'il doit créer un nouvel esclave, il monte automatiquement et temporairement un volume EBS du dernier instantané maître pour initialiser la base de données esclave, puis lance la réplication à partir du point approprié. Tous pointer et cliquer :) (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.)
Concernant la question de la fenêtre de maintenance. Si vous utilisez Multi-AZ, RDS créera une réplique de secours dans une autre zone de disponibilité afin d'éviter tout temps d'arrêt pour la maintenance et de vous protéger contre les défaillances de zone.
C'est ce que je prévois de faire dans les prochaines semaines. Bien sûr, cela vous coûtera plus cher, mais je n’ai pas encore trouvé la solution.
Je teste RDS depuis quelques mois et voici quelques problèmes que j'ai:
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 qu'un professionnel certifié de SQL effectue ce type de travail.
pendant 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 sur laquelle SQL s'exécutait 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 créant un script SQL massif (sur le serveur d'applications) qui recréerait le schéma et réintégrerait les données à un point de restauration.
MySQL sur EC2 vs RDS MySQL
Avantages de MySQL sur EC2 Réplication interrégionale Amazon EC2
Copier des instantanés dans des 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 comparées à RDS
Sauvegardes ponctuelles disponibles dans RDS
IOPS inférieur à RDS MySQL (même après RAID 0) actuellement, 10800 avec 6 disques pour MySQL sur EC2 alors que 12 500 IOPS 16 Ko sur RDS MySQL
J'ai eu la même question ce week-end. Il existe une fenêtre d'indisponibilité de 4 heures par semaine pour RDS, qui effectue la maintenance. RDS semblait plus cher si vous pouvez vous en sortir avec une micro-instance de EC2. (Ceci est vrai pour les instances de test qui ont un trafic minimal). Je n'ai pas non plus été en mesure de changer le fuseau horaire de l'instance RDS car je n'ai pas la permission.
Je suis en train de regarder http://xeround.com/ qui est mysql sur EC2 par une autre société. Ils n'utilisent pas InnoDB, ils disposent de leur propre moteur appelé IDG. Je commence tout juste à étudier cela, mais ils sont en version bêta et donneront 500 Mo d’espace.