2011-01-26 10 views
132

que dan cuenta de un par de diferencias básicas entre los dos, es decir¿Cuáles son las ventajas/limitaciones respectivas de Amazon RDS vs. EC2 con MySQL?

  1. EC2 va a ser más barato

  2. RDS no tener que hacer el mantenimiento

Aparte esos dos, ¿hay alguna ventaja de ejecutar mi base de datos desde RDS en comparación con un servidor EC2 independiente que actúa como servidor MySQL? Suponiendo tamaños de instancia similares, ¿ambos van a encontrarse 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 (la tabla más grande es de 1 millón de filas), solo volumen alto SELECCIONE.

+0

Hay un duplicado entre sitios en http://dba.stackexchange.com/questions/34525/amazon-rds-for-mysql-vs-installing-mysql-on-a-amazon-ec2-instance que obtuvo algunos buenas respuestas –

Respuesta

135

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

En resumen: EC2 proporcionará el máximo rendimiento si usa RAID0 EBS. Haciendo RAID 0 EBS requiere una cantidad bastante significativa de los gastos generales de mantenimiento, por ejemplo:

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

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

EC2 sin RAID 0 EBS proporcionará un rendimiento de E/S de basura, por lo que ni siquiera es realmente una opción.

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

Respuesta corta: ir con RDS. ¿Todavía en la valla? Ve con RDS! Si le gustan los dolores de cabeza y afina cada último bit para obtener el máximo rendimiento, entonces puede considerar EC2 + EBS RAID 0. Vanilla EC2 es una opción terrible para el alojamiento de MySQL.

+1

Buena respuesta. Esto es EXACTAMENTE lo que quiero: http://aws.typepad.com/aws/2010/10/amazon-rds-announcing-read-replicas.html - Gracias por guiarme en la dirección correcta – Macgyver

+0

Buena respuesta. ¿Cómo se maneja el tiempo de inactividad de 4 horas por semana? – Tihom

+8

¡Una cosa que es importante saber sobre la ventana 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 el mantenimiento. He tenido servidores RDS en ejecución durante meses y meses sin tiempo de inactividad. – efalcao

1

Tuve la misma pregunta este fin de semana. Hay un período de inactividad de 4 horas por semana para RDS donde realizan mantenimiento. RDS parecía más caro si se puede salir 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 realmente 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 comenzando a investigar eso, pero están en BETA y darán 500MB de espacio.

+0

Tenga en cuenta que la ventana de mantenimiento no es el tiempo de inactividad todas las semanas; es justo el momento en que se realizaría cualquier mantenimiento si fuera necesario: http://aws.amazon.com/rds/faqs/#12 También vea el comentario de @ efalcao en su respuesta anterior. – mpdaugherty

+0

Se ve muy bien, pero realmente $$ si tiene cualquier cantidad de datos en xeround.com – csharp4me

6

Optamos por utilizar instancias EC2 MySQL porque tenemos un volumen de lectura alto y necesitamos la replicación maestro-esclavo. Por supuesto, puede girar varias instancias de RDS y configurar la replicación de MySQL entre ellas, pero usamos Scalr.net, que lo administra para usted usando instancias de EC2.

Básicamente, le decimos a Scalr cuántas instancias de MySQL queremos para mantenerlas activadas, 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 se termina, etc. Hace copias de seguridad de volcado de SQL y Instantáneas de volumen de EBS del maestro. Entonces, cuando necesita crear un nuevo esclavo, automáticamente monta un volumen EBS de la última instantánea maestra para inicializar el DB esclavo, luego inicia la replicación desde el punto apropiado.Todo apunte y haga clic :) (y no, no trabajo para Scalr ni nada. Scalr está disponible como código abierto si no desea utilizar su servicio)

+0

Tenga en cuenta que, desde que publiqué la respuesta anterior, Amazon ha presentado una compatibilidad explícita de réplica de lectura para instancias de RDS (actualmente solo MySQL). – DavidJ

5

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

Eso es lo que planeo hacer en la próxima semana más o menos. Por supuesto que va a costar más, pero todavía no he trabajado en eso.

23

En this post hay un excelente punto de referencia entre:

  • Ejecutar MySQL en una pequeña EC2 + EBS
  • Ejecutar MySQL en una pequeña EC2 + EBS + ajustado MySql parámetros
  • A Small 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 que llegan a la base de datos.

+1

Es bueno publicar puntos de referencia, pero de buena fe el autor admitió que al final no ajustó adecuadamente Innodb (El param grande para cambiar es por supuesto innodb_buffer_pool_size .... que no lo hizo) –

12

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

La alta disponibilidad de RDS es muy diferente de la replicación maestra maestra o maestro-esclava y es mucho más lenta. No usan la replicación de mysql pero usan algún tipo de replicación de ebs. Por lo tanto, en una situación de conmutación por error montará los ebs en la máquina de copia de seguridad, iniciará mysql, esperará a que mysql realice la recuperación de fallas (ojalá nada se haya corrompido demasiado) y luego hará un cambio dns.

Espero que esto lo ayude con su evaluación.

+1

añadiendo un esclavo de lectura en un DB con 40gb de datos me tomó más de 20min. Esto y el costo y la falta de esclavos leídos en el ec2 regular y/o fuera del sitio no están disponibles no es para nada un comienzo. Yo diría que RDS es bueno para pequeñas tiendas que no necesitan verdaderos tiempos de respuesta de alta disponibilidad y failover. Es más para eliminar un DBA que cualquier cosa en mi humilde opinión. – Ross

3

MySQL en EC2 vs RDS MySQL

ventajas de MySQL en EC2 replicación Amazon EC2 Inter Región

Copiar instantáneas a través de Amazon regiones EC2

RAID 0 con EBS creación de bandas en MySQL EC2

Más de 3TB de espacio en disco (no lo necesitará para su tamaño) puede estar en tached en MySQL en EC2.

desventajas de MySQL en EC2

configuración, supervisión y mantenimiento en comparación con RDS

Punto de copias de seguridad de tiempo disponible 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

4

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

  1. El uso del generador de perfiles SQL es complicado. Como no puede conectar Profiler 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 eso, dista mucho de ser fácil de usar. Solo recomendaría que tenga un profesional certificado de SQL para este tipo de trabajo.

  2. mientras que Amazon hace 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 separadas específicas del cliente y mi solución fue lanzar una instancia EC2 con SQL ejecutándose en ella para adjuntarla a la base de datos RDB de producción e importar los datos y luego realizar una copia de seguridad en la instancia EC2. La otra solución era usar una herramienta de terceros que creara un script SQL masivo (en el servidor de aplicaciones) que recrearía el esquema y llenaría los datos hasta un punto de restauración.

0

Solo agregue el método de copia de seguridad ec2 consistente. http://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 3.000 IOPS, demora alrededor de 1.2 horas para iniciarse en mysql, ya que se inicia desde un apagado imprevisto, por lo que mysql tiene que escanear todas las tablas.

Cuestiones relacionadas