Wysoko wydajne MySQL. Sprawdzone strategie działania na dużą skalę - ebook
Wysoko wydajne MySQL. Sprawdzone strategie działania na dużą skalę - ebook
MySQL od lat jest najbardziej znaną i lubianą bazą danych typu open source. Wciąż spełnia oczekiwania użytkowników, staje się bowiem coraz bardziej zaawansowanym rozwiązaniem bazodanowym. Równocześnie rośnie złożoność tego oprogramowania, pojawiają się nowe funkcje i narzędzia. Ewoluuje też rola administratora bazy danych, podobnie jak zmienia się podejście do pracy zespołowej. Efektem tych zmian powinno być dostarczenie aplikacji o wysokiej wartości biznesowej, takiej, która będzie się skalowała wraz z organizacją. Warunkiem osiągnięcia tego celu jest jednak gruntowna znajomość MySQL.
Ten starannie zaktualizowany przewodnik pozwoli Ci poznać zaawansowane techniki pracy z serwerem MySQL: począwszy od tworzenia obiektów, poprzez projektowanie schematów, indeksów i zapytań, skończywszy na optymalizacji serwera, sprzętu i systemu operacyjnego. Opisano tu bezpieczne i praktyczne sposoby skalowania aplikacji za pomocą replikacji. Pokazano, jak można zapewnić równoważenie obciążenia i sprawić, że aplikacja będzie działała nawet w razie awarii. Omówiono najnowsze trendy pracy z serwerami MySQL (w tym bazy pracujące w chmurze), a także nowe funkcje i narzędzia. Nie zabrakło najlepszych praktyk w zakresie zapewniania bezpieczeństwa bazy, jej wydajności i stabilności. Dzięki temu przewodnikowi zdobędziesz pełną wiedzę o tym, jak nowoczesne firmy używają MySQL na dużą skalę.
W książce między innymi:
- architektura MySQL i silniki pamięci masowej
- konfiguracja serwera a sprzęt
- replikacja MySQL i zapewnienie wysokiej dostępności aplikacji
- serwery MySQL w środowiskach zarządzanej chmury
- zaawansowane techniki optymalizacji MySQL
- automatyzacja zarządzania bazą danych
MySQL: skalowalne rozwiązanie do nowoczesnych zastosowań!
Spis treści
Przedmowa
Wprowadzenie
Rozdział 1. Architektura MySQL
- Architektura logiczna MySQL
- Zarządzanie połączeniami i bezpieczeństwo
- Optymalizacja i wykonywanie zapytań
- Kontrola współbieżności
- Blokady odczytu (zapisu)
- Zasięg działania blokad
- Transakcje
- Poziomy izolacji
- Zakleszczenia
- Rejestrowanie zdarzeń transakcji
- Transakcje w MySQL
- Mechanizm Multiversion Concurrency Control
- Replikacja
- Struktura plików danych
- Silnik InnoDB
- Obsługa dokumentu JSON
- Zmiany w słowniku danych
- Niepodzielne operacje typu DDL
- Podsumowanie
Rozdział 2. Monitorowanie w świecie inżynierii niezawodności
- Wpływ inżynierii niezawodności na zespoły administratorów baz danych
- Definiowanie celów poziomu usługi
- Co spowoduje zadowolenie klientów?
- Co należy mierzyć?
- Definiowanie SLI i SLO
- Rozwiązania w zakresie monitorowania
- Monitorowanie dostępności
- Monitorowanie opóźnienia zapytania
- Monitorowanie pod kątem błędów
- Monitorowanie proaktywne
- Pomiar długoterminowej wydajności działania
- Poznanie rytmu pracy firmy
- Efektywne śledzenie wskaźników
- Stosowanie narzędzi monitorowania do analizy wydajności działania
- Stosowanie SLO do przygotowania architektury danych
- Podsumowanie
Rozdział 3. Funkcjonalność Performance Schema
- Wprowadzenie do Performance Schema
- Elementy instrumentu
- Organizacja konsumenta
- Wykorzystanie zasobów
- Ograniczenia
- Schemat sys
- Poznajemy wątki
- Konfiguracja
- Włączanie i wyłączanie Performance Schema
- Włączanie i wyłączanie instrumentacji
- Włączanie i wyłączanie konsumentów
- Dostrajanie monitorowania określonych obiektów
- Dostrajanie monitorowania wątków
- Dostosowywanie wielkości pamięci dla Performance Schema
- Wartości domyślne
- Stosowanie Performance Schema
- Analizowanie zapytań SQL
- Analiza wydajności działania operacji odczytu i zapisu
- Analiza blokad metadanych
- Analiza poziomu użycia pamięci
- Analiza zmiennych
- Analiza najczęściej występujących błędów
- Analiza samej funkcjonalności Performance Schema
- Podsumowanie
Rozdział 4. Optymalizacja systemu operacyjnego i osprzętu
- Co ogranicza wydajność MySQL?
- W jaki sposób wybrać procesor dla MySQL?
- Zrównoważenie pamięci i zasobów dyskowych
- Buforowanie, odczyt i zapis
- Jaki zestaw roboczy jest odpowiedni dla Ciebie?
- Napęd SSD
- Ogólne omówienie pamięci flash
- Mechanizm usuwania nieużytków
- Optymalizacja wydajności macierzy RAID
- Awaria macierzy RAID, odzyskiwanie danych i monitoring
- Konfiguracja macierzy RAID i buforowanie
- Konfiguracja sieciowa
- Wybór systemu plików
- Wybór zarządcy kolejki dyskowej
- Przestrzeń wymiany
- Stan systemu operacyjnego
- Inne użyteczne narzędzia
- Podsumowanie
Rozdział 5. Optymalizacja konfiguracji serwera
- Podstawy konfiguracji MySQL
- Składnia, zasięg oraz dynamizm
- Trwałe zmienne systemowe
- Efekt uboczny ustawiania zmiennych
- Planowanie zmiany zmiennej
- Czego nie należy robić?
- Tworzenie pliku konfiguracyjnego MySQL
- Konfiguracja minimalna
- Analizowanie zmiennych stanu serwera MySQL
- Konfiguracja poziomu użycia pamięci
- Ilość pamięci używanej przez każde połączenie
- Rezerwacja pamięci dla systemu operacyjnego
- Pula buforów InnoDB
- Bufor wątków
- Dostrajanie zachowania operacji I/O w MySQL
- Dziennik zdarzeń transakcji InnoDB
- Bufor dziennika zdarzeń
- Przestrzeń tabel InnoDB
- Dostosowywanie innych opcji I/O
- Dostosowywanie współbieżności MySQL
- Ustawienia dotyczące bezpieczeństwa
- Zaawansowane ustawienia InnoDB
- Podsumowanie
Rozdział 6. Projektowanie schematu i zarządzanie nim
- Wybór optymalnego rodzaju danych
- Liczby całkowite
- Liczby rzeczywiste
- Ciągi tekstowe
- Rodzaje danych dla daty i godziny
- Bitowe rodzaje danych
- Dane JSON
- Wybór identyfikatorów
- Dane specjalnego rodzaju
- Kwestie, które trzeba wziąć pod uwagę podczas projektowania schematu w MySQL
- Zbyt wiele kolumn
- Zbyt wiele złączeń
- Wszechobecne wartości typu ENUM
- Typ ENUM w przebraniu
- Wartość NULL
- Zarządzanie schematem
- Zarządzanie schematem jako część platformy przechowywania danych
- Podsumowanie
Rozdział 7. Indeksowanie zapewniające wysoką wydajność
- Podstawy indeksowania
- Rodzaje indeksów
- Zalety indeksów
- Strategie indeksowania w celu osiągnięcia maksymalnej wydajności
- Prefiks indeksu oraz selektywność indeksu
- Indeksy wielokolumnowe
- Wybór odpowiedniej kolejności kolumn
- Indeksy klastrowane
- Indeksy pokrywające
- Skanowanie indeksu w celu przeprowadzenia sortowania
- Indeksy zbędne i powielone
- Indeksy nieużywane
- Obsługa indeksu oraz tabeli
- Wyszukiwanie i naprawa uszkodzeń tabeli
- Uaktualnianie danych statystycznych indeksu
- Ograniczanie wielkości indeksu i fragmentacji danych
- Podsumowanie
Rozdział 8. Optymalizacja wydajności zapytań
- Dlaczego zapytania są powolne?
- Podstawy powolnych zapytań: optymalizacja dostępu do danych
- Czy zapytanie bazy danych obejmuje dane, które są niepotrzebne?
- Czy MySQL analizuje zbyt dużą ilość danych?
- Sposoby restrukturyzacji zapytań
- Zapytanie skomplikowane kontra wiele mniejszych
- Podział zapytania
- Podział złączeń
- Podstawy wykonywania zapytań
- Protokół klient-serwer MySQL
- Stany zapytania
- Proces optymalizacji zapytania
- Silnik wykonywania zapytań
- Zwrot klientowi wyników zapytania
- Ograniczenia optymalizatora zapytań MySQL
- Ograniczenia klauzuli UNION
- Szerzenie równości
- Wykonywanie równoległe
- Równoczesne wykonywanie poleceń SELECT i UPDATE w tej samej tabeli
- Optymalizacja określonego rodzaju zapytań
- Optymalizacja zapytań COUNT()
- Optymalizacja zapytań typu JOIN
- Optymalizacja zapytań typu GROUP BY WITH ROLLUP
- Optymalizacja zapytań typu LIMIT i OFFSET
- Optymalizacja za pomocą opcji SQL_CALC_FOUND_ROWS
- Optymalizacja klauzuli UNION
- Podsumowanie
Rozdział 9. Replikacja
- Ogólny opis replikacji
- W jaki sposób działa replikacja?
- Szczegóły kryjące się za replikacją
- Wybór formatu replikacji
- Globalny identyfikator transakcji
- Zapewnienie replikacji odporności na awarie
- Replikacja opóźniona
- Replikacja wielowątkowa
- Replikacja półsynchroniczna
- Filtry replikacji
- Poprawne działanie replikacji pomimo awarii
- Promocja planowana
- Promocja nieplanowana
- Kompromisy związane z promocją
- Topologie replikacji
- Aktywny-pasywny
- Aktywny-pula odczytu
- Odradzane topologie
- Ring
- Administracja replikacją i jej obsługa
- Monitorowanie replikacji
- Pomiar opóźnienia replikacji
- Określanie, czy serwer repliki zachowuje spójność z serwerem źródła
- Problemy związane z replikacją i sposoby ich rozwiązywania
- Uszkodzenie binarnego dziennika zdarzeń w źródle
- Nieunikalne identyfikatory serwerów
- Niezdefiniowane identyfikatory serwerów
- Brakujące tabele tymczasowe
- Niereplikowanie wszystkich uaktualnień
- Ogromne opóźnienie replikacji
- Zbyt duże pakiety w serwerze źródła
- Brak miejsca na dysku
- Ograniczenia replikacji
- Podsumowanie
Rozdział 10. Kopia zapasowa i odzyskiwanie
- Dlaczego kopia zapasowa?
- Definiowanie wymagań procesu odzyskiwania
- Projektowanie rozwiązania kopii zapasowej MySQL
- Kopia zapasowa online czy offline?
- Logiczna czy bezpośrednia kopia zapasowa?
- Co należy umieszczać w kopii zapasowej?
- Przyrostowa kopia zapasowa
- Replikacja
- Zarządzanie kopią zapasową binarnych dzienników zdarzeń i jej tworzenie
- Narzędzia do tworzenia kopii zapasowej i przywracania z niej danych
- MySQL Enterprise Backup
- Percona XtraBackup
- mydumper
- mysqldump
- Tworzenie kopii zapasowej danych
- Tworzenie logicznej kopii zapasowej
- Migawka systemu plików
- Percona XtraBackup
- Odzyskiwanie z kopii zapasowej
- Przywracanie logicznych kopii zapasowych
- Przywracanie bezpośrednich plików z migawki
- Przywracanie danych za pomocą narzędzia Percona XtraBackup
- Uruchomienie MySQL po przywróceniu bezpośrednich plików
- Podsumowanie
Rozdział 11. Skalowalność MySQL
- Czym jest skalowanie?
- Obciążenie ograniczone operacjami odczytu kontra obciążenie ograniczone operacjami zapisu
- Analiza obciążenia
- Obciążenie ograniczone operacjami odczytu
- Obciążenie ograniczone operacjami zapisu
- Sharding funkcjonalny
- Skalowanie obciążenia ograniczonego operacjami odczytu
- Zarządzanie konfiguracją dla pul operacji odczytu
- Sprawdzanie stanu puli odczytu
- Algorytmy równoważenia obciążenia
- Kolejkowanie
- Skalowanie zapisu za pomocą shardingu
- Wiele kluczy partycjonowania
- Wykonywanie zapytań między serwerami
- Vitess
- ProxySQL
- Podsumowanie
Rozdział 12. MySQL w chmurze
- Zarządzany serwer MySQL
- Amazon Aurora dla MySQL
- GCP Cloud SQL
- MySQL w maszynie wirtualnej
- Rodzaje maszyn wirtualnych w chmurze
- Wybór odpowiedniego typu maszyny
- Wybór odpowiedniego typu dysku
- Wskazówki dodatkowe
- Podsumowanie
Rozdział 13. Zgodność i MySQL
- Co to jest zgodność?
- Service Organization Controls Type 2
- Ustawa Sarbanesa-Oxleya
- Norma bezpieczeństwa Payment Card Industry Data Security Standard
- Ustawa Health Insurance Portability and Accountability Act
- Program FedRAMP
- Rozporządzenie o ochronie danych osobowych
- Schrems II
- Przygotowanie do kontroli zapewnienia zgodności
- Zarządzanie kluczami tajnymi użytkownika
- Rozdział ról i danych
- Śledzenie zmian
- Procedury tworzenia kopii zapasowej i przywracania danych
- Podsumowanie
Dodatek A. Uaktualnianie MySQL
- Dlaczego należy uaktualnić serwer MySQL?
- Uaktualnienie cyklu życiowego
- Testowanie uaktualnienia
- Testowanie środowiska programistycznego
- Dokładna kopia danych produkcyjnych
- Replika
- Narzędzia
- Uaktualnienie na dużą skalę
- Podsumowanie
Dodatek B. MySQL w Kubernetesie
- Przygotowanie zasobów za pomocą Kubernetesa
- Staranny wybór celu
- Wybór płaszczyzny kontrolnej
- Pozostałe szczegóły
- Podsumowanie
Kategoria: | Bazy danych |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-9295-3 |
Rozmiar pliku: | 6,1 MB |