¿Cuáles son las ventajas / limitaciones respectivas de Amazon RDS vs. EC2 con MySQL? [cerrado]

132

Me doy cuenta de un par de diferencias básicas entre los dos, es decir

  1. EC2 va a ser más barato

  2. RDS no tendría que hacer mantenimiento

Además de esos dos, ¿hay alguna ventaja en ejecutar mi base de datos desde RDS en lugar de un servidor EC2 separado que actúa como un servidor MySQL? Suponiendo tamaños de instancia similares, ¿ambos se encontrarán con las mismas limitaciones en términos de poder manejar una carga?

Para darle un poco más de información sobre mi uso, tengo una base de datos, nada demasiado grande ni nada (tabla más grande de 1 millón de filas), solo un alto volumen SELECT.

Macgyver
fuente
Simplemente agregue el método de respaldo ec2 consistente. alestic.com/2009/09/ec2-consistent-snapshot Utilizo esa herramienta con un servidor de 300 gb y alrededor de 5,000 bases de datos. En este momento, con un volumen de 3000 IOPS, se necesitan alrededor de 1,2 horas para iniciar mysql, ya que comienza desde un apagado no limpio, por lo que mysql tiene que escanear todas las tablas.
jozwikjp
Hay un duplicado entre sitios en dba.stackexchange.com/questions/34525/… que obtuvo algunas buenas respuestas.
Mark Amery

Respuestas:

135

¡Esta es una pregunta simple con una respuesta muy complicada!

En resumen: EC2 proporcionará el máximo rendimiento si utiliza un RAID0 EBS. Hacer RAID0 EBS requiere una cantidad considerable de gastos generales de mantenimiento, por ejemplo:

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

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

EC2 sin RAID0 EBS proporcionará un rendimiento de E / S deficiente, por lo que ni siquiera es una opción.

RDS proporcionará un rendimiento muy bueno (aunque no máximo) listo para usar. La consola de administración es fantástica y es fácil actualizar las instancias. Los esclavos de alta disponibilidad y solo lectura están a un clic de distancia. Es realmente asombroso.

Respuesta corta: ir con RDS. ¿Todavía en la cerca? Ir con RDS !!! si le gustan los dolores de cabeza y el ajuste hasta el último momento para obtener el máximo rendimiento, puede considerar EC2 + EBS RAID 0. Vanilla EC2 es una opción terrible para el alojamiento de MySQL.

efalcao
fuente
1
Buena respuesta. Esto es EXACTAMENTE lo que quiero: aws.typepad.com/aws/2010/10/… - Gracias por guiarme en la dirección correcta
Macgyver
Buena respuesta. ¿Cómo manejas el tiempo de inactividad de 4 horas por semana?
Tihom el
8
Una cosa que es importante saber sobre el período de mantenimiento de 4 horas es que su servidor no está inactivo durante 4 horas a la semana. Eso es justo cuando harán el mantenimiento SI hay que hacer mantenimiento. He tenido servidores RDS funcionando durante meses y meses sin tiempo de inactividad.
efalcao
2
Hemos tenido servidores RDS funcionando durante AÑOS sin tiempo de inactividad. Una interrupción importante (aproximadamente 6 horas) una vez, todo volvió a la normalidad una vez que AWS se resolvió. (Debo señalar que esta fue una instancia multi-AZ, pero no pudo fallar en la copia de seguridad).
cjm2671
1
@paulkon: no realizamos la conmutación por error a las réplicas externas, utilizamos la conmutación por error RDS, de lo contrario, la promoción, etc. Las réplicas externas son principalmente para DR de respaldo fuera de la nube, así como para división de lectura / escritura para entornos de informes (nuestro nivel de aplicación las conoce). HTH
Ross
24

En esta publicación hay un excelente punto de referencia entre:

  • Ejecutar MySql en un pequeño EC2 + EBS
  • Ejecutar MySql en un pequeño EC2 + EBS + parámetros MySql ajustados
  • Un pequeño RDS

El punto de referencia es muy bueno ya que no está enfocado solo en condiciones ideales (solo un hilo) sino también en escenarios más realistas, con 50 hilos golpeando la base de datos.

Andres
fuente
2
Es bueno publicar puntos de referencia, pero de buena fe el autor admitió al final que no sintonizó adecuadamente Innodb (El parámetro más importante para cambiar es, por supuesto, innodb_buffer_pool_size ... lo cual no hizo)
phil_w
12

RDS no es realmente un sistema de alta disponibilidad. Lea la letra pequeña en las preguntas frecuentes de RDS. Durante un evento de conmutación por error, puede llevar hasta 3 minutos la conmutación por error. Amazon adicional decidirá que necesita "actualizar" su instancia de rds y realizar una conmutación por error en ese punto, lo que reducirá su base de datos durante "hasta 3 minutos" (nuestra experiencia es que puede tomar más tiempo que eso).

La alta disponibilidad de RDS es muy diferente a la replicación maestro - maestro o maestro - esclavo y es mucho más lenta. No usan la replicación mysql pero usan algún tipo de replicación ebs. Entonces, en una situación de conmutación por error, montará los ebs en la máquina de respaldo, iniciará mysql, esperará a que mysql se recupere de la falla (con suerte, nada se corrompió demasiado), luego hará un cambio dns.

Espero que esto te ayude con tu evaluación.

Jeff Whiting
fuente
1
agregar un esclavo de lectura en una base de datos con datos de 40 gb me tomó más de 20 minutos. Esto y el costo y la falta de esclavos de lectura en ec2 regular y / o fuera del sitio no están disponibles para mí no es un gran comienzo. Yo diría que RDS es bueno para pequeñas tiendas que no necesitan tiempos de respuesta reales de alta disponibilidad y conmutación por error. Es más para eliminar un DBA que cualquier cosa en mi humilde opinión.
Ross
Buenas noticias aquí (marzo de 2020). Con Aurora las cosas han mejorado mucho. Todavía no ejecuta un sistema maestro-esclavo, pero debido a que han creado un nuevo sistema de almacenamiento en caso de falla basado en la nube, ahora es muy rápido. También proporciona instantáneas y copias de seguridad rápidas. Aurora realmente ha abordado muchas de las deficiencias de RDS MySQL.
Jeff Whiting
6

Elegimos usar instancias EC2 MySQL porque tenemos un alto volumen de lectura y necesitamos una replicación maestro-esclavo. Por supuesto, puede activar varias instancias de RDS y configurar la replicación de MySQL entre ellas usted mismo, pero usamos Scalr.net, que lo administra por usted utilizando instancias de EC2.

Básicamente, simplemente le decimos a Scalr cuántas instancias de MySQL queremos mantener, automatiza la configuración de la replicación, maneja la conmutación por error automática de la promoción de esclavos para dominar si el maestro termina, etc. Realiza copias de seguridad de volcado SQL e instantáneas de volumen EBS de el maestro. Entonces, cuando necesita crear un nuevo esclavo, automáticamente monta temporalmente un volumen EBS de la última instantánea maestra para inicializar la base de datos esclava, luego comienza la replicación desde el punto apropiado. Todos señalan y hacen clic :) (y no, no trabajo para Scalr ni nada. Scalr está disponible como Open Source si no desea utilizar su servicio)

DavidJ
fuente
Tenga en cuenta que desde que publiqué la respuesta anterior, Amazon ha introducido soporte explícito de réplica de lectura para instancias RDS (actualmente solo MySQL).
DavidJ
5

En cuanto a la ventana de mantenimiento pregunta. Si usa Multi-AZ, RDS creará una réplica en espera en otra zona de disponibilidad para que no haya tiempo de inactividad para el mantenimiento y se proteja contra una falla de zona.

Eso es lo que planeo hacer la próxima semana más o menos. Por supuesto que te va a costar más, pero aún no he trabajado un poco.

espinilla
fuente
4

MySQL en EC2 vs RDS MySQL

Ventajas de MySQL en EC2 Amazon EC2 Replicación entre regiones

Copie instantáneas en las regiones de Amazon EC2

RAID 0 con EBS Striping en MySQL EC2

Se pueden conectar más de 3 TB de espacio en disco (no necesitará esto para su tamaño) en MySQL en EC2.

Desventajas de MySQL en EC2

Configuración, monitoreo y mantenimiento en comparación con RDS

Copias de seguridad puntuales disponibles en RDS

IOPS menor que RDS MySQL (incluso después de RAID 0) actualmente, 10800 con 6 discos para MySQL en EC2 mientras que 12500 IOPS 16KB en RDS MySQL

Harish Ganesan
fuente
4

He estado probando RDS durante unos meses y aquí hay algunos problemas que tengo:

  1. Usar el perfilador de SQL es complicado. Como no puede conectar el generador de perfiles directamente al servidor, debe ejecutar algunos procedimientos almacenados para crear un archivo de registro que pueda analizar. Si bien ofrecen algunas sugerencias sobre cómo se hace, está lejos de ser fácil de usar. Solo recomendaría que tenga un profesional certificado de SQL que haga este tipo de trabajo.

  2. Si bien Amazon realiza una copia de seguridad de su instancia, no puede restaurar una base de datos individual. Tengo una aplicación web con varias bases de datos específicas para el cliente y mi solución fue lanzar una instancia EC2 con SQL ejecutándose para adjuntarla a la base de datos RDB de producción e importar los datos y luego hacer una copia de seguridad en la instancia EC2. La otra solución fue utilizar una herramienta de terceros que crea un script SQL masivo (en el servidor de aplicaciones) que recreará el esquema y volverá a llenar los datos en un punto de restauración.

Contable
fuente
1

Tuve la misma pregunta este fin de semana. Hay una ventana de tiempo de inactividad de 4 horas por semana para RDS donde realizan tareas de mantenimiento. RDS parecía más costoso si puedes salirte con una microinstancia de EC2. (Esto es cierto para las instancias de prueba que tienen un tráfico mínimo) Tampoco pude cambiar la zona horaria de la instancia de RDS porque no tengo permiso.

Ahora estoy mirando http://xeround.com/ que es mysql en EC2 por otra compañía. No usan InnoDB, sino que tienen su propio motor llamado IDG. Estoy empezando a investigar eso, pero están en BETA y darán 500 MB de espacio.

Tihom
fuente
Tenga en cuenta que la ventana de mantenimiento no es tiempo de inactividad todas las semanas; es justo el momento en que se realizaría cualquier mantenimiento si fuera necesario: aws.amazon.com/rds/faqs/#12 También vea el comentario de @ efalcao sobre su respuesta anterior.
mpdaugherty
Se ve realmente genial pero realmente $$ si tiene alguna cantidad de datos en xeround.com
csharp4me