Szczegóły ebooka

Wysoko wydajne MySQL. Sprawdzone strategie działania na dużą skalę. Wydanie IV

Wysoko wydajne MySQL. Sprawdzone strategie działania na dużą skalę. Wydanie IV

Silvia Botros, Jeremy Tinley

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ń!

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
  • Tytuł: Wysoko wydajne MySQL. Sprawdzone strategie działania na dużą skalę. Wydanie IV
  • Autor: Silvia Botros, Jeremy Tinley
  • Tytuł oryginału: High Performance MySQL: Proven Strategies for Operating at Scale, 4th Edition
  • Tłumaczenie: Robert Górczyński
  • ISBN: 978-83-283-9295-3, 9788328392953
  • Data wydania: 2022-11-15
  • Format: Ebook
  • Identyfikator pozycji: wywym4
  • Wydawca: Helion