Bazy danych - ciągłość działania, spójność danych i disaster recovery Daniel Polek-Pawlak Jarosław Zdebik
Plan Prezentacji Wprowadzenie - podstawy. Co oznacza utrata danych dla niedużego sklepu. Czy dostępność danych i baz danych to to samo. Jak zagwarantować dostępność danych dla dla portalu z ponad miliardem odsłon miesięcznie. Jak nad tym wszystkim panować.
Wprowadzenie - Backup na poziomie FS Backup na poziomie file systemu: - Cyklicznie wykonywany jest backup Całkowity / Przyrostowy Backup wysyłany jest na inny serwer / do chmury - Baza danych to ciągle modyfikowany plik (kilka plików + pamięć) Nie jesteśmy w stanie zagwarantować konsystencji danych odtworzonych z backupu - Zatrzymanie maszyny :( Dump bazy :) Dump bazy obciąża bazę - wpływa na wydajność Synchronizacja Backupu bazy i FS
Wirtualizacja - rozwiązuje wszystkie problemy? Backup na poziomie maszyny wirtualnej: - Robimy snapshot całej maszyny Cyklicznie Wysyłany na zdalny serwer / do chmury - Zakładamy, że mamy zrobione to dobrze ;) HV wysyła instrukcje do OS VS FS Freeze / chwilowe zatrzymanie maszyny Baza danych jest konsystentna * Użytkownicy mogą być wylogowani. (AWS) Snapshot jest stosunkowo duży Możemy przemycić błędy na file systemie
Średni sklep - sprzedaż Koszyk (avg v) = 160 zł L. zamówien = 30 Dzienny obrót = 4 800 ZŁ Marża = 960 zł B 20-22 RPO - Punkt w czasie do którego mamy przywrócić dane (ile danych stracimy) RTO - Czas w jakim mamy przywrócić dane (Ile czasu zajmie nam przywrócenie danych)
Czas kopiowania danych z backupu a RTO Koszyk (avg v) = 160 zł L. zamówien = 30 GB 1 Gbps 100 mbps minimalne straty 5 40 sekund 7 minut ~ 50 7 minut 1 godzina 10 minut 200 zł 100 14 minut 2 godziny 20 minut 400 zł 200 28 minut 4 godziny 40 minut 1 000 zł 500 1 godzina 7 minut 11 godzin 7 minut 2 200 zł Dzienny obrót = 4 800 ZŁ Marża = 960 zł
Co oznacza dostępność danych dla portalu A. B. C. D. E. MySQL (400) PostgreSQL (100) Oracle (11) NoSQL (100): redis, mongodb, Couchbase BigData (1,7 PT HDD, 2064 CPU Cores, 9 TB RAM) Odporność na awarie, Odporność na błędy ludzkie, Dostępność (wydajność), Odporność na Ataki, Spójność danych - pomiędzy bazami. Środowisko rośnie...
Architektura Baz
Skala Ruchu 45000 queries/sec Przykład dla jednej wybranej bazy 600000 rows/sec Ilość danych w jednej bazie niejednokrotnie przekracza 1000 GB
Bezpieczeństwo Danych (Replikacja) chroni przed awariami sprzętu nie błędami ludzkimi monitorowanie opóźnień replikacji ruch modyfikujący trafia do mastera
Bezpieczeństwo Danych (Backup i Recovery) Backupy należy wykonywać dedykowanymi narzędziami (sprawdzanie błędów, konsystencja danych, backup online, kompresja) Backupy należy BEZWZGLĘDNIE testowo odtwarzać cyklicznie! Codziennie wykonujemy pełny backup plus archivelogi (RPO) Archivelogi wysyłane co 15 minut na zdalny serwer Backupy wykonywane i na M (noc) i na S (12h później w dzień) Jeden backup trzymany na lokalnym serwerze (M i S), dodatkowo wysyłany na zdalne serwery Polityka trzymania backupów
Bezpieczeństwo Danych (Backup i Recovery) Ustawienie wagi dla baz (SLA/OLA) - którą bazę odtwarzamy jako pierwszą w chwili awarii? Lvm snapshot na bazach z myisam (mylvmbackup) Dbtool (backup, odtworzenie, przepięcie M-S) - wsparcie NOC
Monitoring (24 godziny na dobę) Icinga - ponad 30 checków (długie transakcje, obciążenie, opóźnień replikacji ale też: zmiany obiektów na bazie, zmiany konfiguracji, co urosło w bazie) Statystyki - ponad 500 metryk (użycie indeksów, buforów, tabel tymczasowych...) Baza centralna - monitoring innych baz NOC
Środowiska Bazodanowe Dev - do testów/zabawy, można psuć do woli (po to są) Itg - integracja kodu wielu developerów Staging - testy wydajnościowe Pre-Prod/RC/ UAT - testy użytkowe, import danych produkcyjnych Prod - nie dotykamy, świadoma polityka wdrożeń
Wydajność i Bezpieczeństwo Danych Proxy dla baz - proxy chroniące bazy Hermes - konsystencja danych pomiędzy bazami Baza centralna - monitoring wszystkich zmian
DBPROXY (ochrona baz) A. B. C. D. E. F. G. H. Pula połączeń do baz Cachowanie (mcrouter - pomocne w razie awarii) Agregacja zapytań Master/slave/sharding Security (sql injection trudne do wykonania), własny protokół Kto się może łączyć Transakcje globalne Wsparcie dla różnych baz MySQL, Oracle, PostgreSQL
HERMES A. B. C. Java Równoległe przetwarzanie komunikatów Przenosi dane między bazami
HERMES
Baza Centralna Monitoruje zmiany na bazach, stan bazy i replikacji Bazę centralną dodatkowo sprawdza niezależny system monitoringu
Jak nad tym wszystkim zapanować Rozproszone środowiska Automatyzacja Wirtualizacja Autorskie narzędzia / skrypty automatyzujące Standaryzacja (Sprzęt, Os, Software)
Jak nad tym wszystkim zapanować
DZIĘKUJEMY ZA UWAGĘ