Quali sono i rispettivi vantaggi / limitazioni di Amazon RDS rispetto a EC2 con MySQL? [chiuso]


132

Realizzo un paio di differenze di base tra i due, vale a dire

  1. EC2 sarà più economico

  2. RDS Non avrei dovuto fare manutenzione

Oltre a questi due, ci sono dei vantaggi nell'esecuzione del mio database da RDS rispetto a un server EC2 separato che funge da server MySQL. Supponendo dimensioni di istanze simili, entrambi incontreranno le stesse limitazioni in termini di capacità di gestire un carico?

Per darti qualche informazione in più sul mio utilizzo, ho un database, niente di troppo grande o niente (tabella più grande 1 milione di righe), solo un volume SELECT alto.


Basta aggiungere il metodo di backup coerente ec2. alestic.com/2009/09/ec2-consistent-snapshot Uso questo strumento con un server da 300 GB e circa 5.000 database. In questo momento con un volume IOPS 3000 ci vogliono circa 1,2 ore per avviare mysql poiché inizia da un arresto impuro, quindi mysql deve scansionare ogni tabella.
jozwikjp,

C'è un duplicato tra siti su dba.stackexchange.com/questions/34525/… che ha ottenuto delle buone risposte.
Mark Amery,

Risposte:


135

Questa è una domanda semplice con una risposta molto complicata!

In breve: EC2 fornirà le massime prestazioni se si utilizza un RAID0 EBS. Fare RAID0 EBS richiede una quantità piuttosto significativa di spese generali di manutenzione, ad esempio:

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

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

EC2 senza RAID0 EBS fornirà prestazioni di I / O scadenti, quindi non è nemmeno un'opzione.

RDS fornirà ottime prestazioni (anche se non il massimo) fuori dalla scatola. La console di gestione è fantastica ed è facile aggiornare le istanze. Alta disponibilità e slave di sola lettura sono a portata di clic. È DAVVERO fantastico.

Risposta breve: vai con RDS. Ancora sul recinto? Vai con RDS !!! se ti piacciono i mal di testa e l'ottimizzazione dell'ultimo bit per le massime prestazioni, puoi considerare EC2 + EBS RAID 0. Vanilla EC2 è un'opzione terribile per l'hosting MySQL.


1
Buona risposta. Questo è ESATTAMENTE quello che voglio: aws.typepad.com/aws/2010/10/… - Grazie per avermi guidato nella giusta direzione
Macgyver,

Buona risposta. Come gestite i tempi di inattività di 4 ore settimanali?
Tihom,

8
Una cosa importante da sapere sulla finestra di manutenzione di 4 ore è che il server non è inattivo per 4 ore a settimana! Questo è solo quando eseguiranno la manutenzione SE c'è manutenzione da fare. Ho avuto server RDS in esecuzione per mesi e mesi senza tempi di inattività.
efalcao,

2
Abbiamo server RDS in esecuzione per ANNI senza tempi di inattività. Una grave interruzione (circa 6 ore) una volta, tutto è tornato alla normalità dopo che AWS si è risolto da solo. (Devo sottolineare che si trattava di un'istanza multi-AZ ma non è stato possibile eseguire il failover del backup).
cjm2671,

1
@paulkon - non eseguiamo il failover su repliche fuori sede, utilizziamo il failover RDS, altrimenti la promozione ecc. sul nuovo master diventerebbe complicata. Le repliche offsite sono principalmente per DR di backup out-of-cloud e per la suddivisione in lettura / scrittura per ambienti di report (il nostro livello di applicazione ne è consapevole). HTH
Ross,

24

In questo post c'è un eccellente benchmark tra:

  • Esecuzione di MySql su un piccolo EC2 + EBS
  • Esecuzione di MySql su un piccolo EC2 + EBS + parametri MySql adeguati
  • Un piccolo RDS

Il benchmark è molto buono poiché non è focalizzato solo in condizioni ideali (solo un thread) ma anche in scenari più realistici, con 50 thread che colpiscono il database.


2
È bello pubblicare benchmark, ma in buona fede l'autore ha ammesso alla fine di non aver messo a punto correttamente Innodb (Il grande parametro da modificare è ovviamente innodb_buffer_pool_size .... cosa che non ha fatto)
phil_w

12

RDS non è in realtà un sistema ad alta disponibilità. Leggi la stampa fine nella faq RDS. Durante un evento di failover possono essere necessari fino a 3 minuti per il failover. Amazon aggiuntivo deciderà che deve "aggiornare" la tua istanza rds e fare un failover a quel punto che ridurrà il tuo database per "fino a 3 minuti" (la nostra esperienza è che può richiedere più tempo).

L'elevata disponibilità di RDS è molto diversa dalla replica master - master o master - slave ed è molto più lenta. Non usano la replica mysql ma usano un qualche tipo di replica ebs. Quindi in una situazione di failover monterà gli ebs sul computer di backup, avvierà mysql, attenderà che mysql esegua il ripristino degli errori (si spera che nulla sia stato danneggiato troppo male), quindi esegua un passaggio DNS.

Spero che questo ti aiuti con la tua valutazione.


1
l'aggiunta di uno slave di lettura su un db con dati da 40 GB ha richiesto più di 20 minuti per me. Questo e il costo e la mancanza di read-slave nella normale ec2 e / o fuori sede non sono disponibili per me è praticamente un antipasto. Direi che RDS è buono per i piccoli negozi che non necessitano di veri tempi di risposta di failover e alta disponibilità. È più per eliminare un DBA che altro IMHO.
Ross,

Buone notizie qui (marzo 2020). Con Aurora le cose sono andate molto meglio. Non esegue ancora un sistema master - slave, ma poiché hanno creato un nuovo failover del sistema di archiviazione "basato su cloud" è ora molto rapido. Inoltre fornisce snapshot e backup veloci. Aurora ha davvero risolto molte delle carenze di RDS MySQL.
Jeff Whiting,

6

Abbiamo scelto di utilizzare le istanze MySQL EC2 perché abbiamo un volume di lettura elevato e abbiamo bisogno della replica master-slave. Ovviamente, puoi far girare più istanze RDS e configurare la replica MySQL tra loro da solo, ma usiamo Scalr.net, che lo gestisce per te usando le istanze EC2.

Fondamentalmente, diciamo a Scalr quante istanze MySQL desideriamo mantenerle, automatizza l'installazione della replica, gestisce il failover automatico della promozione slave da master se il master viene terminato ecc. Fa sia backup di dump SQL che istantanee di volumi EBS di Il capo. Pertanto, quando deve creare un nuovo slave, monta automaticamente temporaneamente un volume EBS dell'ultima istantanea master per inizializzare il DB slave, quindi avvia la replica dal punto appropriato. Punta e clicca :) (e no, non lavoro per Scalr o altro. Scalr è disponibile come Open Source se non si desidera utilizzare il loro servizio)


Da quando ho pubblicato la risposta di cui sopra, Amazon ha introdotto il supporto esplicito di replica di lettura per istanze RDS (attualmente solo MySQL).
DavidJ,

5

Per quanto riguarda la domanda sulla finestra di manutenzione. Se si utilizza Multi-AZ, RDS creerà una replica in standby in un'altra zona di disponibilità in modo che non vi siano tempi di inattività per la manutenzione e si protegga da un guasto della zona.

Questo è quello che ho intenzione di fare nella prossima settimana o giù di lì. Ovviamente ti costerà di più, ma non ho ancora risolto il problema.


4

MySQL su EC2 vs RDS MySQL

Vantaggi di MySQL su Replication interregionale EC2 Amazon EC2

Copia le istantanee nelle regioni Amazon EC2

RAID 0 con striping EBS in MySQL EC2

Più di 3 TB di spazio su disco (non sarà necessario per le tue dimensioni) possono essere collegati su MySQL su EC2.

Svantaggi di MySQL su EC2

Configurazione, monitoraggio e manutenzione rispetto a RDS

Backup temporizzati disponibili in RDS

IOPS inferiore a MySQL RDS (anche dopo RAID 0) attualmente, 10800 con 6 dischi per MySQL su EC2 mentre 12500 IOPS 16 KB su RDS MySQL


4

Ho provato RDS per alcuni mesi e qui ci sono alcuni problemi che ho:

  1. L'uso del profiler SQL è complicato. Poiché non è possibile connettere il profiler direttamente al server, è necessario eseguire alcune procedure memorizzate per creare un file di registro che è possibile analizzare. Mentre offrono alcuni suggerimenti su come farlo, è tutt'altro che facile da usare. Vorrei solo raccomandare a un professionista SQL certificato di eseguire questo tipo di lavoro.

  2. mentre Amazon esegue il backup dell'istanza, non è possibile ripristinare un singolo database. Ho un'app Web con diversi database specifici per cliente separati e la mia soluzione era quella di avviare un'istanza EC2 con SQL in esecuzione su di essa per collegarla al database RDB di produzione e importare i dati e quindi eseguirne il backup sull'istanza EC2. L'altra soluzione consisteva nell'utilizzare uno strumento di terze parti che creava un enorme script SQL (sul server delle app) che ricreava lo schema e popolava i dati in un punto di ripristino.


1

Ho avuto la stessa domanda questo fine settimana. C'è una finestra di inattività di 4 ore settimanali per RDS in cui eseguono la manutenzione. RDS sembrava più costoso se riesci a cavartela con una microistanza di EC2. (Questo è vero per le istanze di test che hanno un traffico minimo) Inoltre non sono stato in grado di modificare il fuso orario dell'istanza RDS perché non ho l'autorizzazione.

Sto attualmente guardando http://xeround.com/ che è mysql su EC2 di un'altra società. Non usano InnoDB, invece hanno il loro motore chiamato IDG. Sto solo iniziando a indagare su questo, ma sono in BETA e daranno 500 MB di spazio.


Si noti che la finestra di manutenzione non è inattiva ogni settimana; è solo il momento in cui verrebbe effettuata qualsiasi manutenzione se fosse necessario: aws.amazon.com/rds/faqs/#12 Vedi anche il commento di @ efalcao sulla sua risposta sopra.
mpdaugherty,

Sembra davvero bello ma davvero $$ se hai una quantità di dati su xeround.com
csharp4me
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.