Amazon SOA-C02: Bazy danych i buforowanie — Przewodnik do nauki
Część AWS SysOps Administrator Associate SOA-C02 — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Amazon, albo rozwiąż testy na czas na ExamRoll.io.
Bazy danych i buforowanie to kluczowe obowiązki operacyjne administratora SysOps: zapewniają trwałą pamięć masową, dostępność i odczyty o niskim opóźnieniu dla aplikacji. Ta domena obejmuje obsługę zarządzanych relacyjnych baz danych (RDS i Aurora), skalowanie wydajności odczytu/zapisu, replikację i zachowanie w przypadku awarii (failover) oraz używanie ElastiCache do zmniejszania obciążenia baz danych. Prawidłowa konfiguracja kopii zapasowych, grup parametrów, monitorowania i wzorców unieważniania pamięci podręcznej zapobiega utracie danych i zmniejsza liczbę incydentów operacyjnych.
Operacje na RDS i Aurora, kopie zapasowe i Multi-AZ
RDS (MySQL, PostgreSQL, MariaDB, Oracle, SQL Server) i Amazon Aurora (kompatybilna z MySQL i PostgreSQL) to zarządzane silniki relacyjne o różnej semantyce operacyjnej. Multi-AZ dla RDS tworzy synchroniczną replikę standby w innej Strefie Dostępności (AZ) — jest ona zarządzana przez AWS, zapewnia zautomatyzowany failover w ciągu kilku minut, nie wymaga ręcznej promocji, a replika standby nie jest dostępna do odczytu. Aurora oddziela punkty końcowe zapisu (writer) i odczytu (reader): punkt końcowy zapisu to punkt końcowy klastra obsługiwany przez instancję główną (primary), a Aurora używa rozproszonej pamięci masowej, która automatycznie replikuje się między Strefami Dostępności i zazwyczaj może przełączać się po awarii szybciej niż RDS, ponieważ pamięć masowa jest współdzielona.
Konfiguruj kopie zapasowe i retencję za pomocą:
- Automatyczne kopie zapasowe: włącz z okresem retencji (np.
undefined
). Zapewniają one odzyskiwanie do dowolnego punktu w czasie (PITR) z dokładnością do sekundy w ramach okna retencji dla wspieranych silników.
- Ręczne migawki (snapshots):
undefined
(lub
undefined
dla Aurora), aby utworzyć migawkę, która będzie przechowywana; migawki istnieją, dopóki ich nie usuniesz.
- Odtwarzanie PITR:
undefined
dla RDS lub
undefined
, a następnie utworzenie instancji dla Aurora.
Kryteria decyzyjne:
- Użyj Multi-AZ dla wysokiej dostępności i zautomatyzowanego failover, gdy krytyczna jest dostępność zapisu, a odczyty z repliki standby nie są wymagane.
- Użyj Aurora (klastrowa pamięć masowa), gdy potrzebujesz wysokiej liczby operacji wejścia/wyjścia na sekundę (IOPS), szybkiego failover i automatycznego skalowania pamięci masowej.
- Użyj replik do odczytu (read replicas) do skalowania odczytów i odzyskiwania po awarii w innym regionie (są asynchroniczne i mogą być promowane).
Przykłady operacyjne CLI:
- Włącz Multi-AZ:
undefined
- Utwórz automatyczną migawkę:
undefined
- Odtwórz PITR:
undefined
Repliki do odczytu, failover i strategie replikacji
Repliki do odczytu (read replicas) to asynchroniczne kopie (czytniki RDS lub Aurora) używane głównie do skalowania ruchu odczytu i odciążania systemów raportowych. Występuje w nich opóźnienie replikacji (monitoruj metrykę ReplicaLag) i nie nadają się do zastosowań wymagających silnej spójności danych (strong consistency). Repliki do odczytu mogą być promowane do samodzielnych instancji bazy danych w celu wsparcia odzyskiwania po awarii.
Strategie i opcje replikacji:
- Synchroniczna (replika standby RDS Multi-AZ) — gwarancja braku rozbieżności danych, brak możliwości odczytu z repliki standby.
- Asynchroniczne repliki do odczytu — skalowanie odczytów, możliwość tworzenia kopii międzyregionalnych, ryzyko opóźnienia replikacji i potencjalnej utraty danych podczas failover.
- Czytniki Aurora — zapewniają klastrowe punkty końcowe do odczytu, failover o niskim opóźnieniu poprzez przekierowanie punktu końcowego i automatyczne równoważenie obciążenia między czytnikami.
Wzorce operacyjne:
- Utwórz replikę do odczytu:
undefined
- Promuj replikę:
undefined
- Monitoruj: metryki CloudWatch DatabaseConnections, ReplicaLag, ReadIOPS, WriteIOPS oraz Performance Insights, aby decydować, kiedy dodawać lub usuwać repliki.
Kryteria decyzyjne:
- Jeśli potrzebujesz wysokiej dostępności (HA) dla zapisów, wybierz Multi-AZ. Jeśli potrzebujesz dużej przepustowości odczytu i odciążenia analityki, wybierz repliki do odczytu lub czytniki Aurora.
- Dla odzyskiwania po awarii w innym regionie (cross-region DR), utwórz repliki do odczytu w regionie docelowym i rozważ automatyczne kopiowanie migawek lub użycie DMS do migracji.
Buforowanie z ElastiCache i unieważnianie pamięci podręcznej
ElastiCache oferuje Redis i Memcached w celu zmniejszenia obciążenia bazy danych i opóźnień. Wybierz Redis, gdy potrzebujesz trwałości danych, replikacji, struktur danych oraz wysokiej dostępności z Multi-AZ i automatycznym failover. Wybierz Memcached do prostego buforowania horyzontalnego, gdzie priorytetem jest sharding i wydajność wielowątkowa.
Kluczowe konfiguracje i wzorce:
- Utwórz klaster Redis z replikami i Multi-AZ:
undefined
- Użyj trybu klastra (cluster mode enabled) dla Redis, aby skalować fragmenty (shards); Memcached wymaga haszowania po stronie klienta do shardingu.
- Polityki usuwania (eviction policies):
undefined
— dostosuj w zależności od tego, czy wolisz usuwać tylko wygasłe klucze, czy dowolne klucze, gdy pamięć jest pełna.
- Monitoruj CacheHits i CacheMisses, aby obliczyć współczynnik trafień w pamięci podręcznej (cache hit ratio): hit_ratio = CacheHits / (CacheHits + CacheMisses). Dąż do wysokiego współczynnika trafień, aby zredukować liczbę odczytów z bazy danych.
Strategie unieważniania pamięci podręcznej:
- Cache-aside: aplikacja najpierw sprawdza pamięć podręczną, w przypadku braku danych (miss) odczytuje je z bazy danych i zapisuje w pamięci podręcznej; jawnie wygaszaj lub usuwaj dane z pamięci podręcznej podczas zapisów.
- Write-through/write-behind: zapisy do pamięci podręcznej są propagowane do bazy danych; write-behind grupuje zapisy do bazy danych (zwiększa złożoność).
- Czas życia (Time-to-live, TTL): ustawiaj konserwatywne wartości TTL dla danych, które mogą być nieaktualne; łącz z wersjonowaniem pamięci podręcznej lub kluczami unieważniającymi w przypadku zmian schematu lub masowego unieważniania.
- Użyj mechanizmu pub/sub w Redis lub zdarzeń Lambda, aby w razie potrzeby powiadamiać instancje aplikacji w celu rozproszonego unieważniania.
Grupy parametrów bazy danych, skalowanie i monitorowanie
Grupy parametrów kontrolują ustawienia specyficzne dla silnika (np. max_connections, innodb_buffer_pool_size). RDS używa grup parametrów bazy danych (DB parameter groups) dla instancji oraz grup parametrów klastra bazy danych (DB cluster parameter groups) dla Aurory. Zmiany niektórych parametrów wymagają ponownego uruchomienia (apply pending-reboot), inne są stosowane natychmiast.
Wzorce zarządzania:
- Tworzenie i modyfikacja grupy parametrów:
undefined
; następnie
undefined
- Skalowanie klasy instancji:
undefined
(lub w trakcie okna konserwacyjnego, aby uniknąć restartu).
- Autoskalowanie przestrzeni dyskowej: włącz dla wspieranych typów silników; Aurora automatycznie skaluje przestrzeń dyskową.
Sygnały do monitorowania i skalowania:
- Używaj CloudWatch (metryki FreeableMemory, CPUUtilization, DatabaseConnections, WriteLatency, ReadLatency, DiskQueueDepth) oraz Performance Insights do analizy wolnych zapytań SQL i głównych przyczyn oczekiwania (top waits).
- Włącz Enhanced Monitoring i ustaw szczegółowość (np. 1s do rozwiązywania problemów).
- Używaj RDS Proxy do zarządzania pulą połączeń i redukcji „burz połączeń” w aplikacjach bezserwerowych lub o wysokiej współbieżności.
Procedury tworzenia kopii zapasowych/przywracania i zagadnienia migracyjne
Kopie zapasowe i operacje przywracania muszą być jawnie zdefiniowane i przetestowane. Automatyczne kopie zapasowe zapewniają przywracanie do punktu w czasie (PITR) w ramach okresu retencji; ręczne migawki (snapshoty) są przechowywane do momentu usunięcia i mogą być kopiowane między regionami oraz szyfrowane różnymi kluczami KMS. Podczas przywracania należy jawnie określić region i znacznik czasu.
Popularne polecenia przywracania:
- Przywracanie do punktu w czasie (RDS):
undefined
/ lub podaj –restore-time
- Przywracanie migawki (między regionami): najpierw skopiuj migawkę (copy-db-snapshot) do regionu docelowego, a następnie przywróć.
Zagadnienia migracyjne:
- AWS DMS do migracji z minimalnym czasem przestoju (heterogenicznych/homogenicznych). DMS wspiera ciągłą replikację; upewnij się, że ustawienia silnika źródłowego są poprawne (włączony binlog dla MySQL).
- Migracja logiczna (mysqldump, pg_dump) dla prostych eksportów; przywracanie z fizycznej migawki dla dużych zbiorów danych.
- Sprawdź zestawy znaków, różnice w grupach parametrów oraz klucze KMS dla zaszyfrowanych migawek.
Częste pułapki i kryteria decyzyjne
- Przywracanie kopii zapasowych do niewłaściwego regionu lub na zły moment w czasie: zawsze weryfikuj –region i –restore-time przed przywróceniem; użyj skopiowanej migawki w regionie docelowym i testuj przywracanie w środowisku testowym (staging).
- Zakładanie, że repliki do odczytu zapewniają wysoką dostępność: pamiętaj, że repliki są asynchroniczne; użyj Multi-AZ lub Aurora dla wysokiej dostępności zapisu (write HA) i replikacji synchronicznej.
- Pominięcie unieważniania pamięci podręcznej: projektuj TTL, klucze z wersjonowaniem lub unieważnianie sterowane zdarzeniami; unikaj polegania wyłącznie na krótkim TTL w celu zapewnienia poprawności danych.
- Niewłączenie automatycznych kopii zapasowych lub nieprawidłowe ustawienie retencji: ustaw backup-retention-period >0 i weryfikuj PITR poprzez testowe przywracanie; upewnij się, że klucze KMS są dostępne w regionie docelowym dla kopii migawki.
- Modyfikowanie grup parametrów bez ponownego uruchomienia: sprawdź ApplyMethod; planuj restarty w oknach konserwacyjnych dla parametrów, które tego wymagają, aby uniknąć nieoczekiwanych przestojów.
- Skalowanie bez zarządzania połączeniami: zwiększenie klasy instancji bez użycia RDS Proxy lub pulowania połączeń może nie rozwiązać problemu „burz połączeń”; zaimplementuj pulowanie, aby zarządzać dużą liczbą krótkotrwałych połączeń.
Problem praktyczny: Scenariusz użycia
Firma Acme Retail używa głównej instancji MySQL RDS z dużym ruchem odczytu i okazjonalnymi skokami obciążenia analitycznego; boryka się z opóźnieniem replikacji (replica lag) podczas nocnych procesów ETL i obserwuje wysoką rotację połączeń powodującą skoki użycia CPU.
- Uruchom dodatkową grupę replik do odczytu dla analityki, odizolowaną od zapytań aplikacyjnych, i umieść ją w innej strefie dostępności (AZ) lub regionie na potrzeby odtwarzania po awarii (DR).
- Skonfiguruj monitorowanie replik (metryka ReplicaLag) i dodaj logikę autoskalowania, aby dodawać kolejne repliki, gdy opóźnienie lub metryka ReadLatency przekroczą ustalone progi.
- Wdróż RDS Proxy przed aplikacją, aby multipleksować połączenia i zmniejszyć ich rotację; dostosuj odpowiednio parametr max_connections w grupie parametrów.
- Przenieś zadania analityczne, aby korzystały z repliki analitycznej, i zaimplementuj buforowanie w modelu cache-aside za pomocą ElastiCache for Redis z odpowiednimi wartościami TTL, aby zredukować powtarzające się zapytania.
- Przetestuj procedury przełączania awaryjnego (failover) i przywracania: wykonaj przywracanie do punktu w czasie (PITR) na instancji testowej (staging) i zweryfikuj kroki promocji repliki.
Takie podejście rozdziela obciążenia odczytu, zmniejsza presję na połączenia z główną instancją i wykorzystuje buforowanie do obniżenia wolumenu odczytów z bazy danych. Jest zgodne z najlepszymi praktykami AWS, łącząc skalowanie odczytu, pulowanie połączeń oraz przetestowane procesy tworzenia kopii zapasowych i przywracania w celu utrzymania dostępności i odporności operacyjnej.
← Moc obliczeniowa i Auto Scaling · Wszystkie domeny · Serverless i integracja aplikacji →
Przećwicz te pytania → · Testy na czas na ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Zdaj egzamin →