Jak faktycznie działa kopia zapasowa / migawka Amazon RDS?

95

Jestem klientem Amazon RDS i codziennie doświadczam skoków opóźnienia zapisu Amazon RDS, odpowiadających mniej więcej okresowi tworzenia kopii zapasowych. Na końcu migawki zobaczę również skoki (przykład: uruchomienie migawki trwa około 1 godziny, aw ostatnich 5 minutach skoki opóźnienia zapisu). Prowadzę wdrożenie multi-AZ m1.large.

Czy jest ktoś na stosie, który może wyjaśnić, jak faktycznie działa kopia zapasowa Amazon RDS ? Przeczytałem dokumentację Amazon RDS i o ile wiem, Amazon RDS nie zachowuje się zgodnie ze specyfikacją. W szczególności te operacje tworzenia kopii zapasowych / migawek powinny uderzać w moją replikę, a zatem nie powodować żadnych przestojów / problemów z wydajnością, a przynajmniej tak mi się wydawało.

Mogę przedstawić mój problem na sześć pytań:

  • Co technicznie dzieje się podczas tworzenia migawki i kopii zapasowej i czym się różnią? (Jeśli odpowiesz na to pytanie, powiedz mi, czy jesteś w stanie empirycznie potwierdzić swoją odpowiedź, czy po prostu cytujesz moją dokumentację).
  • Czy w okresie tworzenia kopii zapasowych w przypadku wdrożenia z wieloma AZ należy spodziewać się nagłego opóźnienia zapisu?
  • Czy na końcu migawki w przypadku wdrożenia z wieloma AZ należy spodziewać się nagłego opóźnienia zapisu?
  • Czy mój skok opóźnienia zapisu byłby jeszcze wyższy, gdybym nie był multi-AZ?
  • Czy pod względem architektonicznym byłbym w stanie uniknąć tych skoków opóźnienia zapisu, gdybym zainstalował własną bazę danych działającą na dwóch instancjach m1.large EC2?
  • Czy są jakieś konfiguracje, których mogę użyć, które pozwoliłyby uniknąć tych skoków opóźnienia zapisu, podczas gdy nadal hostuję moją bazę danych z RDS, czy też jestem skutecznie zdany na łaskę Amazon?

Pytanie dodatkowe: gdzie i jak hostujesz swoją bazę danych mysql?

Mogę powiedzieć, że ogólnie jestem zadowolony z RDS, z wyjątkiem tych codziennych problemów z opóźnieniem zapisu. Uwielbiam wbudowane monitorowanie bazy danych i było dość proste w konfiguracji i uruchomieniu.

Dzięki!

amazon RDS write latency

esilver
źródło

Odpowiedzi:

79

Oprócz MySQL na niektórych maszynach, którymi zarządzamy, uruchamiamy również kilka instancji RDS. Nie mogę komentować konkretnie, ponieważ nie jestem inżynierem Amazon, ale dowiedziałem się kilku rzeczy, które mogą wyjaśnić to, co widzisz:

  • Chociaż Amazon nie udostępnia szczegółów zaplecza w 100%, podejrzewamy, że używa swojego systemu EBS do tworzenia kopii zapasowych baz danych RDS.

  • Ten artykuł pomaga wyjaśnić ograniczenia EBS i funkcje migawki http://blog.rightscale.com/2008/08/20/amazon-ebs-explained/ Ponownie, chociaż nie jest to jednoznaczne, rozsądne byłoby, gdyby Amazon używał tej infrastruktury do świadczyć usługi RDS.

  • Zazwyczaj kopia zapasowa MySQL, w przeciwieństwie do migawki, obejmuje użycie narzędzia takiego jak mysqldump do utworzenia pliku instrukcji SQL, które następnie odtworzą bazę danych. W tym celu nie trzeba zamrażać bazy danych. W przypadku zaplecza EBS najlepszą praktyką jest zamrożenie bazy danych (wstrzymanie wszystkich transakcji) podczas tworzenia migawek, aby uniknąć uszkodzenia danych.

  • Skoki, które widzisz na końcach okna kopii zapasowej. Jeśli replikacja zostanie wstrzymana przez Amazon podczas tworzenia migawki repliki, replika będzie musiała „nadrobić zaległości” w transakcjach po ukończeniu migawki. Spowodowałoby to skok opóźnienia.

  • Replikacja we wdrożeniu z wieloma AZ jest z natury wolniejsza niż wdrożenie pojedynczego AZ. Cena, jaką płacisz za lepszą redundancję.

Joshua
źródło
7
Mogę potwierdzić, że Amazon RDS używa EBS jako magazynu zapasowego dla swoich baz danych RDS. Wykresy opóźnienia odczytu i opóźnienia zapisu w RDS Cloudwatch efektywnie opisują instancję EBS. Dziękuję za tę odpowiedź, to ma sens.
esilver
1
Amazon udostępnia więcej szczegółów na temat sekcji
Joshua
@Joshua, czy masz jakieś przemyślenia na ten (nieco powiązany) temat? stackoverflow.com/questions/6799371/… Dzięki!
esilver,
jeśli używasz repliki do odczytu, czy wpłynie to na replikę główną?
Matej
1
Dokumentacja AWS stwierdza teraz, że „Krótkie zamrożenie operacji we / wy, zazwyczaj trwające kilka sekund, występuje zarówno podczas zautomatyzowanych kopii zapasowych, jak i operacji tworzenia migawek bazy danych w instancjach DB Single-AZ”. docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
baxang