Jakie są odpowiednie zalety / ograniczenia Amazon RDS w porównaniu z EC2 z MySQL? [Zamknięte]

132

Zdaję sobie sprawę z kilku podstawowych różnic między nimi, tj

  1. EC2 będzie tańsze

  2. RDS Nie musiałbym wykonywać konserwacji

Poza tymi dwoma, są jakieś zalety uruchamiania mojej bazy danych z RDS w przeciwieństwie do oddzielnego serwera EC2 działającego jako serwer MySQL. Zakładając podobne rozmiary instancji, czy oba będą miały te same ograniczenia w zakresie obsługi obciążenia?

Aby dać ci trochę więcej informacji na temat mojego zastosowania, mam bazę danych, nic zbyt dużego ani nic (największa tabela 1 milion wierszy), po prostu duża objętość SELECT.

Macgyver
źródło
Wystarczy dodać spójną metodę tworzenia kopii zapasowych ec2. alestic.com/2009/09/ec2-consistent-snapshot Używam tego narzędzia z serwerem 300 GB i około 5000 baz danych. W tej chwili przy wolumenie 3000 IOPS uruchomienie mysql zajmuje około 1,2 godziny, ponieważ zaczyna się on od nieczystego zamknięcia, więc mysql musi skanować każdą tabelę.
jozwikjp
Na stronie dba.stackexchange.com/questions/34525/ znajduje się duplikat z różnych witryn, który zawiera kilka dobrych odpowiedzi.
Mark Amery,

Odpowiedzi:

135

To proste pytanie z bardzo skomplikowaną odpowiedzią!

Krótko mówiąc: EC2 zapewni maksymalną wydajność, jeśli wybierzesz EBS RAID0. Wykonywanie RAID0 EBS wymaga dość znacznych nakładów konserwacyjnych, na przykład:

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

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

EC2 bez RAID0 EBS zapewni kiepską wydajność we / wy, więc nie jest to nawet opcja.

RDS zapewni bardzo dobrą (choć nie maksymalną) wydajność po wyjęciu z pudełka. Konsola zarządzania jest fantastyczna i łatwo ją aktualizować. Wysoka dostępność i slave tylko do odczytu są w zasięgu jednego kliknięcia. To NAPRAWDĘ niesamowite.

Krótka odpowiedź: Idź z RDS. Wciąż na płocie? Idź z RDS !!! jeśli lubisz bóle głowy i dostrajanie do ostatniej chwili w celu uzyskania maksymalnej wydajności, możesz rozważyć EC2 + EBS RAID 0. Vanilla EC2 to straszna opcja dla hostingu MySQL.

efalcao
źródło
1
Dobra odpowiedź. To DOKŁADNIE to, czego chcę: aws.typepad.com/aws/2010/10/… - Dziękuję za poprowadzenie mnie we właściwym kierunku
Macgyver
Dobra odpowiedź. Jak radzisz sobie z przestojami trwającymi 4 godziny w tygodniu?
Tihom
8
Jedną z ważnych rzeczy, które warto wiedzieć o 4-godzinnym oknie konserwacji, jest to, że serwer nie jest wyłączony przez 4 godziny w tygodniu! Właśnie wtedy przeprowadzą konserwację, JEŚLI jest do wykonania konserwacja. Mam serwery RDS działające od miesięcy i miesięcy bez przestojów.
efalcao
2
Mamy serwery RDS działające przez LATA bez przestojów. Jedna poważna awaria (około 6 godzin) raz, wszystko wróciło do normy po rozwiązaniu AWS. (Powinienem zaznaczyć, że była to instancja z wieloma AZ, ale nie udało się jej awaryjnie przejść do kopii zapasowej).
cjm2671
1
@paulkon - nie przełączamy awaryjnie na repliki zewnętrzne, używamy przełączania awaryjnego RDS, w przeciwnym razie promocja itp. z powrotem do nowego mastera byłaby trudna. Zewnętrzne repliki służą głównie do odzyskiwania kopii zapasowych poza chmurą, a także do dzielenia odczytu / zapisu w środowiskach raportowania (nasza aplikacja jest tego świadoma). HTH
Ross
24

W tym poście jest doskonały punkt odniesienia między:

  • Uruchamianie MySql na małym EC2 + EBS
  • Uruchomienie MySql na małym EC2 + EBS + z dostosowanymi parametrami MySql
  • Mały RDS

Benchmark jest bardzo dobry, ponieważ nie koncentruje się tylko w idealnych warunkach (tylko jeden wątek), ale także w bardziej realistycznych scenariuszach, w których do bazy danych trafia 50 wątków.

Andres
źródło
2
Fajnie jest publikować benchmarki, ale w dobrej wierze autor przyznał na koniec, że nie dostroił odpowiednio Innodb (najważniejszym parametrem do zmiany jest oczywiście innodb_buffer_pool_size .... czego nie zrobił)
phil_w
12

RDS nie jest tak naprawdę systemem o wysokiej dostępności. Przeczytaj drobnym drukiem w FAQ RDS. W przypadku przełączenia awaryjnego przełączenie awaryjne może zająć do 3 minut. Dodatkowy amazon zdecyduje, że musi "zaktualizować" twoją instancję rds i wykonać w tym momencie przełączenie awaryjne, które spowoduje wyłączenie bazy danych na "do 3 minut" (z naszego doświadczenia wynika, że ​​może to zająć więcej czasu).

Wysoka dostępność RDS różni się znacznie od replikacji typu master - master lub master - slave i jest znacznie wolniejsza. Nie używają replikacji mysql, ale używają pewnego rodzaju replikacji ebs. Więc w sytuacji przełączania awaryjnego zamontuje ebs na maszynie kopii zapasowej, uruchomi mysql, zaczeka, aż mysql odzyska po awarii (miejmy nadzieję, że nic nie uległo uszkodzeniu), a następnie dokona przełączenia DNS.

Mam nadzieję, że to pomoże ci w ocenie.

Jeff Whiting
źródło
1
Dodanie czytnika slave do bazy danych z 40 GB danych zajęło mi ponad 20 minut. To oraz koszt i brak read-slave'ów w zwykłym ec2 i / lub poza siedzibą, które są niedostępne, są dla mnie prawie nie startujące. Powiedziałbym, że RDS jest dobre dla małych sklepów, które nie potrzebują prawdziwej wysokiej dostępności i czasów reakcji na awarię. To bardziej wyeliminowanie DBA niż cokolwiek IMHO.
Ross
Dobra wiadomość tutaj (marzec 2020). Z Aurorą sytuacja się poprawiła. Nadal nie działa system master-slave, ale ponieważ stworzyli nowy "oparty na chmurze" system pamięci masowej, przełączanie awaryjne jest teraz bardzo szybkie. Zapewnia również szybkie migawki i kopie zapasowe. Aurora naprawdę rozwiązała wiele niedociągnięć RDS MySQL.
Jeff Whiting,
6

Zdecydowaliśmy się na użycie instancji MySQL EC2, ponieważ mamy dużą liczbę odczytów i potrzebujemy replikacji typu master-slave. Oczywiście możesz uruchomić wiele instancji RDS i samodzielnie skonfigurować replikację MySQL między nimi, ale używamy Scalr.net, który zarządza tym za Ciebie za pomocą instancji EC2.

Zasadniczo po prostu mówimy Scalrowi, ile instancji MySQL chcemy utrzymać, automatyzuje konfigurację replikacji, obsługuje automatyczne przełączanie awaryjne promocji slave do mastera, jeśli master zostanie zerwany itp. Wykonuje zarówno kopie zapasowe SQL, jak i migawki woluminów EBS mistrz. Tak więc, gdy musi utworzyć nowy slave, automatycznie tymczasowo montuje wolumin EBS ostatniej głównej migawki w celu zainicjowania podrzędnej bazy danych, a następnie rozpoczyna replikację od odpowiedniego punktu. Wszystko wskaż i kliknij :) (i nie, nie pracuję dla Scalra ani nic. Scalr jest dostępny jako Open Source, jeśli nie chcesz korzystać z ich usługi)

DavidJ
źródło
Zauważ, że odkąd opublikowałem powyższą odpowiedź, Amazon wprowadził jawną obsługę repliki odczytu dla instancji RDS (obecnie tylko MySQL).
DavidJ
5

Odnośnie pytania o okno konserwacji. Jeśli używasz Multi-AZ, RDS utworzy replikę rezerwową w innej strefie dostępności, dzięki czemu nie ma przestojów na konserwację i chronisz się przed awarią strefy.

To właśnie planuję zrobić w przyszłym tygodniu. Oczywiście będzie cię to kosztować więcej, ale jeszcze tego nie wypracowałem.

piszczel
źródło
4

MySQL na EC2 vs RDS MySQL

Zalety MySQL w replikacji między regionami EC2 Amazon EC2

Kopiuj migawki w regionach Amazon EC2

RAID 0 z EBS Striping w MySQL EC2

Do MySQL na EC2 można podłączyć więcej niż 3 TB miejsca na dysku (nie będziesz tego potrzebować do swojego rozmiaru).

Wady MySQL na EC2

Konfiguracja, monitorowanie i konserwacja w porównaniu z RDS

Kopie zapasowe punktu w czasie dostępne w RDS

IOPS mniejsze niż RDS MySQL (nawet po RAID 0) obecnie, 10800 z 6 dyskami dla MySQL na EC2, natomiast 12500 IOPS 16KB dla RDS MySQL

Harish Ganesan
źródło
4

Wypróbowuję RDS od kilku miesięcy i oto kilka problemów, które mam:

  1. Używanie profilera SQL jest trudne. Ponieważ nie można połączyć programu profilującego bezpośrednio z serwerem, należy uruchomić pewne procedury składowane, aby utworzyć plik dziennika, który można przeanalizować. Chociaż oferują kilka sugestii, jak to zrobić, nie jest to przyjazne dla użytkownika. Zalecałbym tylko, aby tego rodzaju prace wykonał certyfikowany specjalista SQL.

  2. podczas gdy Amazon tworzy kopię zapasową Twojej instancji, nie możesz przywrócić pojedynczej bazy danych. Mam aplikację internetową z kilkoma oddzielnymi bazami danych dla konkretnych klientów i moim rozwiązaniem było uruchomienie instancji EC2 z uruchomionym SQL w celu podłączenia do produkcyjnej bazy danych RDB i zaimportowania danych, a następnie zarchiwizowania ich w instancji EC2. Innym rozwiązaniem było użycie narzędzia innej firmy, które tworzy ogromny skrypt SQL (na serwerze aplikacji), który odtworzy schemat i zapełni dane z powrotem do punktu przywracania.

Eccountable
źródło
1

Miałem to samo pytanie w ten weekend. RDS ma 4-godzinny okres przestoju w tygodniu, w którym przeprowadza konserwację. RDS wydawał się droższy, jeśli możesz uciec z mikro instancją EC2. (Dotyczy to instancji testowych, które mają minimalny ruch) Nie mogłem również zmienić strefy czasowej instancji RDS, ponieważ nie mam pozwolenia.

Teraz patrzę na http://xeround.com/, czyli mysql na EC2 innej firmy. Nie używają InnoDB, zamiast tego mają własny silnik o nazwie IDG. Właśnie zaczynam to badać, ale są w wersji BETA i dadzą 500 MB miejsca.

Tihom
źródło
Zwróć uwagę, że okres konserwacji nie oznacza przestoju co tydzień; to po prostu czas, kiedy konserwacja byłaby wykonywana, gdyby była potrzebna: aws.amazon.com/rds/faqs/#12 Zobacz także komentarz @ efalcao dotyczący jego odpowiedzi powyżej.
mpdaugherty
Wygląda naprawdę fajne, ale naprawdę $$ jeśli masz dowolną ilość danych w xeround.com
csharp4me