bazy danych - ciągłość działania, spójność danych...
TRANSCRIPT
Bazy danych - ciągłość działania, spójność danych i disaster recovery
Daniel Polek-PawlakJarosł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 FSBackup 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ł
20 - 22B
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
Dzienny obrót = 4 800 ZŁ
Marża = 960 zł
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ł
Co oznacza dostępność danych dla portalu
A. MySQL (400)B. PostgreSQL (100)C. Oracle (11)D. NoSQL (100): redis, mongoDB, Couchbase E. BigData (1,7 PT HDD, 2064 CPU Cores, 9 TB RAM)
Środowisko rośnie ...
Odporność na awarie, Odporność na błędy ludzkie, Dostępność (wydajność), Odporność na Ataki, Spójność danych - pomiędzy bazami.
ArchitekturaBaz
Skala Ruchu
45000 queries/sec
600000 rows/sec
Ilość danych w jednej bazie niejednokrotnie przekracza 1000 GB
Przykład dla jednej wybranej bazy
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. Pula połączeń do bazB. Cachowanie (mcrouter - pomocne w razie awarii)C. Agregacja zapytańD. Master/slave/shardingE. Security (sql injection trudne do wykonania), własny protokółF. Kto się może łączyćG. Transakcje globalneH. Wsparcie dla różnych baz MySQL, Oracle, PostgreSQL
HERMES
A. JavaB. Równoległe przetwarzanie
komunikatówC. 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Ę