Szczegóły ebooka

MySQL. Jak zaprojektować i wdrożyć wydajną bazę danych. Wydanie II

MySQL. Jak zaprojektować i wdrożyć wydajną bazę danych. Wydanie II

Vinicius M. Grippa, Sergey Kuzmichev

Ebook

Wymagania względem baz danych stale rosną, co jest związane z dostępnością coraz większych ilości danych. Obserwujemy więc dynamiczny rozwój różnych systemów bazodanowych. Mimo że w tej branży pojawia się sporo nowych propozycji, relacyjne bazy danych wciąż cieszą się dużą popularnością. Spośród rozwiązań typu open source najbardziej znaną i lubianą bazą danych od lat pozostaje MySQL. Jest to oprogramowanie, które świetnie się sprawdza nawet w systemach operujących na dużych ilościach danych.

W tym gruntownie zaktualizowanym przewodniku znalazły się dokładne informacje dotyczące konfiguracji MySQL w takich systemach jak Linux, Windows i macOS, jak również w kontenerze Dockera. Przedstawiono tutaj zasady projektowania baz danych, a także modyfikowania już istniejących. Opisano techniki pracy w obciążonym środowisku produkcyjnym, pokazano też, jak stosować mechanizm transakcji i reguły zarządzania użytkownikami. Omówiono sposoby uzyskiwania wysokiej wydajności działania i dostępności serwera przy minimalnych kosztach. Zademonstrowano, jak dostrajać i zabezpieczać bazy, jak pracować z kopiami zapasowymi, wreszcie ― jak używać plików konfiguracyjnych. W tym wydaniu pojawiły się nowe rozdziały poświęcone wysokiej dostępności serwera, mechanizmu równoważenia obciążenia i używania MySQL w chmurze.

W książce między innymi:

  • gruntowne podstawy MySQL
  • wdrażanie bazy danych MySQL, również w maszynach wirtualnych i w chmurze
  • projektowanie bazy danych i tworzenie zapytań
  • monitorowanie bazy danych i praca z kopiami zapasowymi
  • optymalizacja kosztów używania bazy danych w chmurze
  • koncepcje związane z bazami danych

MySQL: dane zawsze gotowe do akcji!

Wprowadzenie

Część I. Rozpoczęcie pracy z MySQL

  • 1. Instalowanie bazy danych MySQL
    • Rozwidlenia MySQL
      • MySQL Community Edition
      • Percona Server for MySQL
      • MariaDB Server
      • MySQL Enterprise Edition
      • Opcje instalacji i obsługiwane platformy
      • 1. Pobranie dystrybucji MySQL przeznaczonej do instalacji
      • 2. Instalacja dystrybucji MySQL
      • 3. Przeprowadzanie niezbędnej konfiguracji
      • 4. Przeprowadzanie testów wydajności działania
    • Instalowanie MySQL w systemie Linux
      • Instalowanie MySQL w dystrybucji CentOS 7
      • Instalowanie MySQL w dystrybucji CentOS 8
      • Instalowanie MySQL w systemie Ubuntu 20.04 LTS (Focal Fossa)
      • Instalowanie serwera MySQL w systemie macOS Big Sur
      • Instalowanie MySQL w Windows 10
    • Zawartość katalogu MySQL
      • Pliki domyślne w wydaniu MySQL 5.7
      • Pliki domyślne w wydaniu MySQL 8.0
    • Używanie interfejsu powłoki
    • Używanie Dockera
      • Instalowanie Dockera
    • Używanie piaskownicy
    • Uaktualnianie serwera MySQL

Część II. Używanie MySQL

  • 2. Modelowanie i projektowanie bazy danych
    • Jak nie tworzyć projektu bazy danych
    • Proces projektowania bazy danych
    • Model relacji między encjami
      • Przedstawianie encji
      • Przedstawianie relacji
      • Udział pełny i częściowy
      • Encja czy atrybut?
      • Encja czy relacja?
      • Encje pośrednie
      • Encje słabe i silne
    • Normalizacja bazy danych
      • Normalizacja przykładowej tabeli
      • Pierwsza postać normalizacji - brak powtarzających się grup
      • Druga postać normalizacji - wyeliminowanie zbędnych danych
      • Trzecia postać normalizacji - wyeliminowanie danych niezależnych od klucza
      • Przykłady modelowania relacji encji
    • Używanie modelu relacji encji
      • Mapowanie encji i relacji na tabele bazy danych
      • Utworzenie modelu ER bazy danych banku
      • Konwersja modelu EER na bazę danych MySQL za pomocą oprogramowania MySQL Workbench
  • 3. Podstawy języka SQL
    • Używanie bazy danych sakila
    • Zapytanie SELECT i podstawowe techniki wykonywania zapytań
      • Zapytanie SELECT dotyczące pojedynczej tabeli
      • Wybór kolumn
      • Wybieranie rekordów za pomocą klauzuli WHERE
      • Klauzula ORDER BY
      • Klauzula LIMIT
      • Złączanie dwóch tabel
    • Zapytanie INSERT
      • Podstawy zapytania INSERT
      • Składnie alternatywne
    • Zapytanie DELETE
      • Podstawy pracy z zapytaniem DELETE
      • Używanie klauzul WHERE, ORDER BY i LIMIT
      • Usuwanie wszystkich rekordów za pomocą zapytania TRUNCATE
    • Zapytanie UPDATE
      • Przykłady
      • Używanie klauzul WHERE, ORDER BY i LIMIT
    • Przeglądanie baz danych i tabel za pomocą zapytań SHOW i polecenia mysqlshow
  • 4. Praca ze strukturami bazy danych
    • Tworzenie i używanie baz danych
    • Tworzenie tabeli
      • Podstawy
      • Kodowanie znaków i ich kolejność
      • Inne funkcjonalności
      • Typy kolumn
      • Klucze i indeksy
      • Funkcjonalność AUTO_INCREMENT
    • Modyfikowanie struktury
      • Dodawanie, usuwanie i modyfikowanie kolumn
      • Dodawanie, usuwanie i modyfikowanie indeksów
      • Zmienianie nazwy tabeli i modyfikowanie innych struktur
    • Usuwanie struktur
      • Usuwanie bazy danych
      • Usuwanie tabel
  • 5. Zapytania zaawansowane
    • Aliasy
      • Alias kolumny
      • Aliasy tabel
    • Agregowanie danych
      • Klauzula DISTINCT
      • Klauzula GROUP BY
      • Klauzula HAVING
      • Złączenia zaawansowane
      • Złączenia lewe i prawe
      • Złączenie naturalne
      • Wyrażenia stałych w złączeniach
    • Zapytania zagnieżdżone
      • Podstawy zapytań zagnieżdżonych
      • Klauzule ANY, SOME, ALL, IN i NOT IN
      • Klauzule EXISTS i NOT EXISTS
      • Zapytanie zagnieżdżone w klauzuli FROM
      • Zapytanie zagnieżdżone w klauzuli JOIN
    • Zmienne użytkownika

Część III. MySQL w środowisku produkcyjnym

  • 6. Transakcje i nakładanie blokad
    • Poziomy izolacji
      • REPEATABLE READ
      • READ COMMITTED
      • READ UNCOMMITTED
      • SERIALIZABLE
      • Nakładanie blokad
      • Blokada metadanych
      • Blokada rekordów
      • Zakleszczenie
    • Parametry MySQL powiązane z poziomami izolacji i blokadami
  • 7. Jak wycisnąć więcej z bazy danych MySQL?
    • Wstawianie danych za pomocą zapytań
    • Wczytywanie danych z pliku zawierającego wartości rozdzielone przecinkami
    • Zapisywanie danych do pliku w formacie wartości rozdzielonych przecinkami
    • Tworzenie tabeli za pomocą zapytań
    • Uaktualnianie i usuwanie danych w wielu tabelach
      • Usunięcie
      • Uaktualnienia
    • Zastępowanie danych
    • Zapytanie EXPLAIN
    • Alternatywne silniki bazy danych
      • InnoDB
      • MyISAM i Aria
      • MyRocks i TokuDB
      • Inne typy tabel
  • 8. Zarządzanie użytkownikami i uprawnieniami
    • Poznajemy użytkowników i uprawnienia
    • Użytkownik root
    • Tworzenie nowego użytkownika i praca z nim
    • Tabele uprawnień
    • Zarządzanie użytkownikiem i rejestrowanie danych
    • Modyfikowanie i usuwanie kont użytkowników
      • Modyfikowanie konta użytkownika
      • Usunięcie użytkownika
    • Uprawnienia
      • Uprawnienia statyczne kontra dynamiczne
      • Uprawnienie SUPER
      • Zapytania związane z zarządzaniem uprawnieniami
      • Sprawdzanie uprawnień
      • Uprawnienie GRANT OPTION
    • Role
    • Zmiana hasła użytkownika root i niebezpieczny rozruch
    • Podpowiedzi dotyczące bezpiecznego rozruchu
  • 9. Używanie plików opcji
    • Struktura pliku opcji
    • Zasięg opcji
    • Kolejność wyszukiwania dla plików opcji
    • Specjalne pliki opcji
      • Lokalny plik konfiguracyjny
      • Plik konfiguracyjny trwale przechowywanych zmiennych systemowych
    • Ustalanie efektu użycia opcji
  • 10. Kopia zapasowa i odzyskiwanie danych po awarii
    • Fizyczna i logiczna kopia zapasowa
      • Logiczna kopia zapasowa
      • Fizyczna kopia zapasowa
      • Ogólne omówienie logicznej i fizycznej kopii zapasowej
    • Replikacja jako narzędzie kopii zapasowej
      • Awaria infrastruktury
      • Błąd we wdrożeniu
    • Program mysqldump
      • Przygotowanie replikacji za pomocą mysqldump
    • Wczytywanie danych z pliku SQL kopii zapasowej
    • mysqlpump
    • mydumper i myloader
    • Zimna kopia zapasowa i migawki systemu plików
    • Percona XtraBackup
      • Tworzenie kopii zapasowej i przywracanie z niej danych
      • Funkcje zaawansowane
      • Tworzenie za pomocą XtraBackup przyrostowej kopii zapasowej
    • Inne narzędzia do tworzenia fizycznej kopii zapasowej
      • MySQL Enterprise Backup
      • mariabackup
    • Przywracanie do pewnego momentu w czasie
    • Informacje techniczne dotyczące binarnych dzienników zdarzeń
      • Pozostawienie binarnych dzienników zdarzeń
      • Identyfikowanie celu dla przywracania do pewnego momentu w czasie
      • Przykład przywracania do pewnego momentu w czasie - XtraBackup
      • Przykład przywracania do pewnego momentu w czasie - mysqldump
    • Eksportowanie i importowanie przestrzeni tabel InnoDB
      • Szczegóły techniczne
      • Eksportowanie przestrzeni tabeli
      • Importowanie przestrzeni tabeli
      • Przywracanie pojedynczej tabeli za pomocą narzędzia XtraBackup
    • Testowanie i weryfikowanie kopii zapasowej
    • Wprowadzenie do strategii tworzenia kopii zapasowej bazy danych
  • 11. Konfigurowanie i dostrajanie serwera
    • Demon serwera MySQL
    • Zmienne serwera MySQL
      • Sprawdzanie ustawień serwera
      • Najlepsze praktyki

Część IV. Różne zagadnienia

  • 12. Monitorowanie bazy danych MySQL
    • Wskaźniki systemu operacyjnego
      • Procesor
      • Dysk
      • Pamięć
      • Sieć
    • Obserwacja serwera MySQL
      • Zmienne systemowe
      • Podstawowe rozwiązania w zakresie monitorowania
      • Dziennik zdarzeń wolno wykonywanych zapytań
      • Raport stanu silnika InnoDB
    • Metody analizy
      • Metoda USE
      • Metoda RED
    • Narzędzia do monitorowania MySQL
    • Incydenty, diagnostyka i ręczne zbieranie danych
      • Okresowe pobieranie wartości systemowych zmiennych stanu
      • Używanie pt-stalk do zbierania wskaźników dotyczących MySQL i systemu operacyjnego
      • Rozszerzona procedura ręcznego zbierania danych
  • 13. Zapewnianie wysokiej dostępności
    • Replikacja asynchroniczna
      • Podstawowe parametry do zdefiniowania w źródle i replice
      • Tworzenie repliki za pomocą Percona XtraBackup
      • Tworzenie repliki za pomocą wtyczki klonowania
      • Tworzenie repliki za pomocą mysqldump
      • Tworzenie repliki za pomocą mydumper i myloader
      • Wtyczka Group Replication
    • Replikacja synchroniczna
      • Klaster Galera/PCX
  • 14. MySQL w chmurze
    • Bazy danych jako usługa (DBaaS)
      • Amazon RDS dla MySQL/MariaDB
      • Azure SQL
    • Amazon Aurora
    • Egzemplarze MySQL w chmurze
    • MySQL w Kubernetes
      • Wdrażanie Percona XtraDB Cluster w Kubernetes
  • 15. Mechanizm równoważenia obciążenia w bazie danych MySQL
    • Mechanizm równoważenia obciążenia i sterownik aplikacji
    • Mechanizm równoważenia obciążenia ProxySQL
      • Instalowanie i konfigurowanie ProxySQL
    • Mechanizm równoważenia obciążenia HAProxy
      • Instalowanie i konfigurowanie HAProxy
    • Router MySQL
  • 16. Różne zagadnienia związane z MySQL
    • Powłoka MySQL
      • Instalowanie powłoki MySQL
      • Instalowanie powłoki MySQL w Ubuntu 20.04 Focal Fossa
      • Instalowanie powłoki MySQL w CentOS 8
      • Wdrażanie za pomocą powłoki MySQL odizolowanego klastra InnoDB
      • Narzędzia powłoki MySQL
    • Wykres typu flame graph
    • Kompilacja MySQL na podstawie kodu źródłowego
      • Kompilacja MySQL dla dystrybucji Ubuntu Focal Fossa i procesorów ARM
    • Analiza awarii MySQL
  • Tytuł: MySQL. Jak zaprojektować i wdrożyć wydajną bazę danych. Wydanie II
  • Autor: Vinicius M. Grippa, Sergey Kuzmichev
  • Tytuł oryginału: Learning MySQL: Get a Handle on Your Data, 2nd Edition
  • Tłumaczenie: Robert Górczyński
  • ISBN: 978-83-283-8961-8, 9788328389618
  • Data wydania: 2022-08-30
  • Format: Ebook
  • Identyfikator pozycji: mysjz2
  • Wydawca: Helion