Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00357 008404 11063028 na godz. na dobę w sumie
MySQL. Podręcznik administratora - książka
MySQL. Podręcznik administratora - książka
Autor: Liczba stron: 712
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-687-X Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> mysql - programowanie
Porównaj ceny (książka, ebook, audiobook).

Poznaj wszystkie tajniki sprawnego administrowania
najpopularniejszą bazą danych

MySQL jest najpopularniejszym obecnie systemem zarządzania bazami danych, dostępnym na licencji open source. Jego szybkość działania, łatwość konfiguracji, wysoka wydajność i nieskomplikowana obsługa to zalety, dzięki którym MySQL jest wybierany przez programistów i administratorów do przeróżnych celów -- od zaplecza bazodanowego dla witryn WWW aż do przechowywania danych ogromnych korporacji. Jednak zainstalowanie bazy i stworzenie hierarchii tabel to jedno zagadnienie, a sprawne zarządzanie nią i dbanie o właściwe działanie -- zupełnie inne. Tu niezbędna jest nie tylko znajomość języka SQL, ale także wiedza o mechanizmach sterujących bazą, typach tabel i czynnikach wpływających na jej wydajność.

Książka 'MySQL. Podręcznik administratora' to zbiór informacji niezbędnych do pracy osobie odpowiadającej za poprawną pracę MySQL. Przedstawia wszystkie zagadnienia związane z instalacją, administrowaniem i optymalizowaniem bazy. Opisuje metody replikowania danych, zarządzania kontami użytkowników i zabezpieczania danych przed uszkodzeniem oraz zaawansowane mechanizmy składowania InnoDB i narzędzia wchodzące w skład pakietu MySQL.

Dzięki wiadomościom zawartym w tej książce optymalnie skonfigurujesz MySQL oraz zapewnisz jego maksymalną wydajność i najwyższy poziom bezpieczeństwa danych.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE MySQL. Podrêcznik administratora Autor: Paul Dubois T³umaczenie: Tomasz Pêdziwiatr (rozdz. 5 – 10, dod. A, B), Grzegorz Werner (rozdz. 1 – 4) ISBN: 83-7361-687-X Tytu³ orygina³u: MySQL Administrators Guide Format: B5, stron: 712 Ksi¹¿ka „MySQL. Podrêcznik administratora” to zbiór informacji niezbêdnych do pracy osobie odpowiadaj¹cej za poprawn¹ pracê MySQL. Przedstawia wszystkie zagadnienia zwi¹zane z instalacj¹, administrowaniem i optymalizowaniem bazy. Opisuje metody replikowania danych, zarz¹dzania kontami u¿ytkowników i zabezpieczania danych przed uszkodzeniem oraz zaawansowane mechanizmy sk³adowania InnoDB i narzêdzia wchodz¹ce w sk³ad pakietu MySQL. • Instalowanie MySQL z plików binarnych i ĥród³owych • Zarz¹dzanie systemem przywilejów i kontami u¿ytkowników • Zapobieganie awariom i usuwanie ich skutków • Replikacja danych • Optymalizowanie wydajnoġci bazy • Klient MySQL i narzêdzia u¿ytkowe • Mechanizmy sk³adowania ISAM i InnoDB • Usuwanie przyczyn b³êdów Dziêki wiadomoġciom zawartym w tej ksi¹¿ce optymalnie skonfigurujesz MySQL oraz zapewnisz jego maksymaln¹ wydajnoġæ i najwy¿szy poziom bezpieczeñstwa danych. Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl Spis treści Rozdział 1. Informacje ogólne ............................................................................ 11 1.1. Informacje o niniejszym przewodniku................................................................... 11 1.1.1. Konwencje używane w podręczniku........................................................ 12 1.2. Przegląd systemu zarządzania bazami danych MySQL ......................................... 14 1.2.1. Historia MySQL....................................................................................... 15 1.2.2. Najważniejsze cechy MySQL .................................................................. 16 1.2.3. Stabilność MySQL................................................................................... 19 1.2.4. Jak duże mogą być tabele MySQL? ......................................................... 20 1.2.5. Zgodność z rokiem 2000.......................................................................... 21 1.3. Informacje o firmie MySQL AB............................................................................ 23 1.3.1. Model biznesowy i usługi MySQL AB.................................................... 24 1.3.2. Informacje kontaktowe............................................................................. 26 1.4. Pomoc techniczna i licencjonowanie MySQL........................................................ 28 1.4.1. Pomoc techniczna oferowana przez MySQL AB..................................... 28 1.4.2. Prawa autorskie i licencje MySQL........................................................... 29 1.4.3. Licencje MySQL...................................................................................... 29 1.4.4. Logo i znaki towarowe firmy MySQL AB............................................... 32 1.5. Plan rozwoju MySQL ............................................................................................ 34 1.5.1. MySQL 4.0 w pigułce.............................................................................. 35 1.5.2. MySQL 4.1 w pigułce.............................................................................. 37 1.5.3. MySQL 5.0: następna wersja rozwojowa................................................. 39 1.6. MySQL i przyszłość............................................................................................... 39 1.6.1. Nowe cechy planowane w wersji 4.1 ....................................................... 39 1.6.2. Nowe cechy planowane w wersji 5.0 ....................................................... 39 1.6.3. Nowe cechy planowane w wersji 5.1 ....................................................... 40 1.6.4. Funkcje planowane na najbliższą przyszłość ........................................... 41 1.6.5. Funkcje planowane na dalszą przyszłość ................................................. 44 1.6.6. Nowe cechy, których nie planujemy ........................................................ 46 1.7. Źródła informacji o MySQL .................................................................................. 46 1.7.1. Listy dyskusyjne MySQL ........................................................................ 46 1.7.2. Pomoc społeczności użytkowników MySQL na IRC (ang. Internet Relay Chat) ........................................................................ 55 1.8. MySQL — zgodność ze standardami..................................................................... 55 1.8.1. Standardy obsługiwane przez MySQL..................................................... 56 1.8.2. Wybór trybu SQL..................................................................................... 56 1.8.3. Uruchamianie MySQL w trybie ANSI..................................................... 57 1.8.4. Rozszerzenia standardu SQL w serwerze MySQL................................... 57 1.8.5. Rozbieżności między MySQL a standardem SQL ................................... 60 1.8.6. Jak MySQL obsługuje ograniczenia?....................................................... 67 1.8.7. Znane błędy i wady projektowe MySQL ................................................. 70 4 Spis treści Rozdział 2. Instalowanie MySQL ........................................................................ 77 2.1. Ogólne kwestie instalacyjne................................................................................... 78 2.1.1. Systemy operacyjne obsługiwane przez MySQL..................................... 78 2.1.2. Wybór dystrybucji MySQL...................................................................... 81 2.1.3. Jak zdobyć MySQL?................................................................................ 92 2.1.4. Weryfikowanie integralności pakietu za pomocą sum kontrolnych MD5 albo narzędzia GnuPG.............................................................................. 92 2.1.5. Układ katalogów instalacyjnych .............................................................. 96 2.2. Standardowa instalacja MySQL z dystrybucji binarnej ......................................... 97 2.2.1. Instalowanie MySQL w Windows ........................................................... 98 2.2.2. Instalowanie MySQL w systemie Linux ................................................ 110 2.2.3. Instalowanie MySQL w systemie Mac OS X......................................... 113 2.2.4. Instalowanie MySQL w systemie NetWare ........................................... 116 2.2.5. Instalowanie MySQL w innych systemach typu Unix ........................... 118 2.3. Instalacja MySQL z dystrybucji źródłowej.......................................................... 121 2.3.1. Instalacja dystrybucji źródłowej............................................................. 123 2.3.2. Typowe opcje skryptu configure............................................................ 126 2.3.3. Instalowanie MySQL z drzewa kodu źródłowego.................................. 129 2.3.4. Rozwiązywanie problemów występujących podczas kompilowania MySQL..................................................................132 2.3.5. Uwagi dotyczące biblioteki MIT-pthreads............................................. 136 2.3.6. Instalowanie MySQL z kodu źródłowego w Windows.......................... 137 2.3.7. Kompilowanie klientów MySQL w Windows ....................................... 141 2.4. Konfiguracja i testy poinstalacyjne ...................................................................... 142 2.4.1. Procedury poinstalacyjne w Windows ................................................... 142 2.4.2. Procedury poinstalacyjne w systemie Unix............................................ 143 2.4.3. Automatyczne uruchamianie i zatrzymywanie serwera MySQL ........... 150 2.4.4. Uruchamianie serwera MySQL i rozwiązywanie problemów................ 152 2.4.5. Zabezpieczanie początkowych kont MySQL......................................... 156 2.5. Instalowanie nowszej lub starszej wersji MySQL................................................ 159 2.5.1. Aktualizowanie wersji 4.1 do 5.0........................................................... 161 2.5.2. Aktualizowanie wersji 4.0 do 4.1........................................................... 161 2.5.3. Aktualizowanie wersji 3.23 do 4.0......................................................... 166 2.5.4. Aktualizowanie wersji 3.22 do 3.23....................................................... 171 2.5.5. Aktualizowanie wersji 3.21 do 3.22....................................................... 173 2.5.6. Aktualizowanie wersji 3.20 do 3.21....................................................... 173 2.5.7. Aktualizowanie MySQL w Windows .................................................... 174 2.5.8. Aktualizowanie tabel przywilejów......................................................... 175 2.5.9. Kopiowanie baz danych MySQL do innego komputera......................... 176 2.6. Uwagi dotyczące poszczególnych systemów operacyjnych................................. 177 2.6.1. Uwagi dotyczące systemu Linux............................................................ 177 2.6.2. Uwagi dotyczące systemu Mac OS X .................................................... 186 2.6.3. Uwagi dotyczące systemu Solaris .......................................................... 187 2.6.4. Uwagi dotyczące systemu BSD ............................................................. 192 2.6.5. Uwagi dotyczące innych systemów typu Unix....................................... 196 2.6.6. Uwagi dotyczące systemu OS/2............................................................. 206 2.6.7. Uwagi dotyczące systemu BeOS............................................................ 207 2.7. Uwagi dotyczące instalacji języka Perl................................................................ 207 2.7.1. Instalowanie języka Perl w systemie Unix............................................. 208 2.7.2. Instalowanie oprogramowania ActiveState Perl w Windows................. 209 2.7.3. Problemy z interfejsem DBI/DBD języka Perl....................................... 210 Spis treści 5 Rozdział 3. Korzystanie z programów MySQL .................................................... 213 3.1. Przegląd programów MySQL .............................................................................. 213 3.2. Uruchamianie programów MySQL...................................................................... 214 3.3. Określanie opcji programów................................................................................ 215 3.3.1. Używanie opcji w wierszu polecenia ..................................................... 216 3.3.2. Używanie plików opcji .......................................................................... 217 3.3.3. Określanie opcji za pomocą zmiennych środowiskowych ..................... 221 3.3.4. Ustawianie zmiennych programu za pomocą opcji................................ 222 Rozdział 4. Administrowanie bazą danych ........................................................ 225 4.1. Serwer MySQL i skrypty startowe....................................................................... 225 4.1.1. Skrypty i programy użytkowe działające po stronie serwera ................. 225 4.1.2. Rozszerzony serwer MySQL mysqld-max............................................. 227 4.1.3. Skrypt startowy mysqld_safe ................................................................. 229 4.1.4. Skrypt startowy mysql.server................................................................. 233 4.1.5. Program mysqld_multi do zarządzania wieloma serwerami MySQL .... 233 4.2. Konfigurowanie serwera MySQL ........................................................................ 237 4.2.1. Opcje wiersza polecenia mysqld ............................................................ 238 4.2.2. Tryb SQL serwera.................................................................................. 249 4.2.3. Zmienne systemowe serwera ................................................................. 251 4.2.4. Zmienne stanu serwera........................................................................... 281 4.3. Ogólne kwestie bezpieczeństwa........................................................................... 288 4.3.1. Ogólne wskazówki dotyczące bezpieczeństwa ...................................... 288 4.3.2. Zabezpieczanie MySQL przed napastnikami......................................... 291 4.3.3. Opcje startowe mysqld związane z bezpieczeństwem............................ 293 4.3.4. Kwestie bezpieczeństwa związane z instrukcją LOAD DATA LOCAL.....295 4.4. System przywilejów dostępu MySQL.................................................................. 296 4.4.1. Funkcje systemu przywilejów................................................................ 296 4.4.2. Jak działa system przywilejów? ............................................................. 296 4.4.3. Przywileje obsługiwane przez MySQL.................................................. 300 4.4.4. Łączenie się z serwerem MySQL........................................................... 304 4.4.5. Kontrola dostępu, etap 1.: weryfikacja połączenia................................. 305 4.4.6. Kontrola dostępu, etap 2.: weryfikacja żądań......................................... 309 4.4.7. Kiedy uwzględniane są zmiany przywilejów? ....................................... 312 4.4.8. Przyczyny błędów Access denied .......................................................... 313 4.4.9. Szyfrowanie haseł w MySQL 4.1........................................................... 318 4.5. Zarządzanie kontami użytkowników MySQL...................................................... 324 4.5.1. Nazwy użytkowników i hasła MySQL................................................... 324 4.5.2. Dodawanie nowych kont użytkownika MySQL..................................... 326 4.5.3. Usuwanie kont użytkownika MySQL .................................................... 329 4.5.4. Ograniczanie zasobów używanych przez konto..................................... 330 4.5.5. Przypisywanie haseł kontom.................................................................. 331 4.5.6. Ochrona hasła......................................................................................... 333 4.5.7. Używanie połączeń zabezpieczonych .................................................... 334 4.6. Zapobieganie awariom i usuwanie ich skutków................................................... 341 4.6.1. Kopie zapasowe bazy danych ................................................................ 341 4.6.2. Utrzymanie tabel i usuwanie skutków awarii......................................... 343 4.6.3. Tworzenie harmonogramu utrzymania tabel.......................................... 357 4.6.4. Uzyskiwanie informacji o tabeli............................................................. 358 4.7. Lokalizacja i zastosowania międzynarodowe MySQL......................................... 365 4.7.1. Zestaw znaków używany do zapisu i sortowania danych....................... 365 4.7.2. Ustawianie języka komunikatów o błędach ........................................... 366 4.7.3. Dodawanie nowego zestawu znaków..................................................... 367 4.7.4. Tablice definicji znaków........................................................................ 369 6 Spis treści 4.7.5. Obsługa sortowania łańcuchów.............................................................. 369 4.7.6. Obsługa znaków wielobajtowych........................................................... 370 4.7.7. Problemy z zestawami znaków .............................................................. 370 4.8. Pliki dziennika MySQL ....................................................................................... 370 4.8.1. Dziennik błędów .................................................................................... 371 4.8.2. Ogólny dziennik zapytań........................................................................ 372 4.8.3. Dziennik aktualizacji.............................................................................. 372 4.8.4. Dziennik binarny.................................................................................... 373 4.8.5. Dziennik powolnych zapytań................................................................. 377 4.8.6. Utrzymanie plików dziennika ................................................................ 377 4.9. Uruchamianie wielu serwerów MySQL w jednym komputerze........................... 378 4.9.1. Uruchamianie wielu serwerów w Windows........................................... 380 4.9.2. Uruchamianie wielu serwerów w systemie Unix ................................... 384 4.9.3. Używanie programów klienta w środowisku z wieloma serwerami....... 385 4.10. Pamięć podręczna zapytań MySQL ..................................................................... 386 4.10.1. Sposób działania pamięci podręcznej zapytań ....................................... 387 4.10.2. Opcje instrukcji SELECT związane z pamięcią podręczną zapytań ...... 389 4.10.3. Konfiguracja pamięci podręcznej zapytań ............................................. 389 4.10.4. Stan i utrzymanie pamięci podręcznej zapytań ...................................... 390 Rozdział 5. Replikacja w MySQL ...................................................................... 393 5.1. Wstęp do replikacji .............................................................................................. 393 5.2. Ogólny opis implementacji replikacji .................................................................. 394 5.3. Szczegóły implementacji replikacji...................................................................... 395 5.3.1. Stany wątku replikacji serwera nadrzędnego ......................................... 397 5.3.2. Stany wątku wejścia-wyjścia serwera podrzędnego............................... 398 5.3.3. Stany wątku SQL serwera podrzędnego................................................. 399 5.3.4. Pliki stanu i transmisyjne pliki replikacji ............................................... 399 5.4. Sterowanie replikacją........................................................................................... 402 5.5. Kompatybilność replikacji pomiędzy różnymi wersjami MySQL ....................... 407 5.6. Konfiguracja replikacji z aktualizacją wersji serwera.......................................... 407 5.6.1. Replikacja z aktualizacją do wersji 4.0 lub 4.1 ...................................... 408 5.6.2. Replikacja z aktualizacją do wersji 5.0 .................................................. 408 5.7. Replikacja — możliwości i problemy .................................................................. 409 5.8. Opcje startowe replikacji...................................................................................... 413 5.9. Replikacja — najczęściej zadawane pytania........................................................ 424 5.10. Replikacja — rozwiązywanie problemów............................................................ 431 5.11. Raportowanie błędów replikacji........................................................................... 432 Rozdział 6. Optymalizacja MySQL..................................................................... 435 6.1. Wstęp do optymalizacji........................................................................................ 435 6.1.1. Ograniczenia projektowe MySQL i kompromisy................................... 436 6.1.2. Projektowanie przenośnej aplikacji........................................................ 436 6.1.3. Do czego wykorzystywaliśmy MySQL.................................................. 438 6.1.4. Pakiet testowania wydajności MySQL................................................... 439 6.1.5. Wykorzystanie własnych testów wydajności ......................................... 440 6.2. Optymalizowanie instrukcji SELECT oraz innych zapytań................................. 441 6.2.1. Składnia polecenia EXPLAIN. Pobieranie informacji o instrukcji SELECT ...................................................................................441 6.2.2. Szacowanie wydajności zapytania ......................................................... 450 6.2.3. Szybkość wykonania zapytań SELECT ................................................. 451 6.2.4. Jak MySQL optymalizuje klauzule WHERE ......................................... 452 6.2.5. Jak MySQL optymalizuje klauzule OR.................................................. 454 6.2.6. Jak MySQL optymalizuje IS NULL....................................................... 454 6.2.7. Jak MySQL optymalizuje DISTINCT.................................................... 455 Spis treści 7 6.2.8. Jak MySQL optymalizuje LEFT JOIN i RIGHT JOIN.......................... 456 6.2.9. Jak MySQL optymalizuje ORDER BY.................................................. 457 6.2.10. Jak MySQL optymalizuje LIMIT........................................................... 459 6.2.11. Jak uniknąć przeszukiwania tabeli ......................................................... 460 6.2.12. Szybkość wykonywania zapytań INSERT............................................. 461 6.2.13. Szybkość wykonywania zapytań UPDATE ........................................... 463 6.2.14. Szybkość wykonywania zapytań DELETE............................................ 463 6.2.15. Inne wskazówki optymalizacyjne .......................................................... 463 6.3. Problemy związane z blokowaniem..................................................................... 467 6.3.1. Metody blokowania................................................................................ 467 6.3.2. Problemy związane z blokowaniem tabel .............................................. 470 6.4. Optymalizowanie struktury bazy danych ............................................................. 472 6.4.1. Wybór projektu ...................................................................................... 472 6.4.2. Dane powinny być tak małe, jak to tylko możliwe ................................ 472 6.4.3. Indeksy na pojedynczej kolumnie .......................................................... 474 6.4.4. Indeksy na wielu kolumnach.................................................................. 474 6.4.5. Jak MySQL wykorzystuje indeksy......................................................... 475 6.4.6. Pamięć podręczna klucza MyISAM....................................................... 478 6.4.7. Jak MySQL zlicza otwarte tabele........................................................... 484 6.4.8. Jak MySQL otwiera i zamyka tabele ..................................................... 485 6.4.9. Wady tworzenia wielu tabel w tej samej bazie danych .......................... 486 6.5. Optymalizowanie serwera MySQL...................................................................... 487 6.5.1. Czynniki związane z systemem serwera oraz optymalizacja jego parametrów startowych ................................... 487 6.5.2. Optymalizowanie parametrów serwera .................................................. 488 6.5.3. Wpływ kompilacji i łączenia na wydajność MySQL ............................. 490 6.5.4. Jak MySQL wykorzystuje pamięć ......................................................... 492 6.5.5. Jak MySQL wykorzystuje DNS............................................................. 494 6.6. Kwestie związane z dyskiem................................................................................ 495 6.6.1. Wykorzystanie dowiązań symbolicznych .............................................. 496 Rozdział 7. Klient MySQL i programy użytkowe................................................. 501 7.1. Przegląd skryptów klienta oraz narzędzi.............................................................. 501 7.2. myisampack — generator skompresowanych tabel, przeznaczonych tylko do odczytu........................................................................... 503 7.3. mysql — narzędzie wiersza poleceń .................................................................... 510 7.3.1. Polecenia mysql ..................................................................................... 515 7.3.2. Wykonywanie instrukcji SQL z pliku tekstowego ................................. 519 7.3.3. mysql — wskazówki.............................................................................. 519 7.4. mysqladmin — administrowanie serwerem MySQL ........................................... 521 7.5. mysqlbinlog — narzędzie do rejestrowania binarnego ........................................ 526 7.6. mysqlcc — centrum sterowania MySQL ............................................................. 530 7.7. mysqlcheck — program do utrzymania i naprawiania tabel ................................ 532 7.8. mysqldump — narzędzie do tworzenia kopii zapasowych bazy danych.............. 535 7.9. mysqlhotcopy — narzędzie do tworzenia kopii zapasowych baz danych ............ 542 7.10. mysqlimport — program do importowania danych ............................................. 544 7.11. mysqlshow — pokazywanie baz danych, tabel i kolumn..................................... 547 7.12. perror — opisy kodów błędów............................................................................. 549 7.13. replace — narzędzie do zamiany łańcuchów znaków .......................................... 549 Rozdział 8. Mechanizmy składowania i typy tabel MySQL ................................. 551 8.1. Mechanizm składowania MyISAM...................................................................... 553 8.1.1. Opcje startowe MyISAM ....................................................................... 555 8.1.2. Obszar wymagany dla kluczy ................................................................ 557 8.1.3. Mechanizm składowania tabel MyISAM............................................... 557 8.1.4. Problemy związane z tabelami MyISAM............................................... 560 8 Spis treści 8.2. Mechanizm składowania MERGE ....................................................................... 562 8.2.1. Problemy związane z tabelami MERGE ................................................ 565 8.3. Mechanizm składowania MEMORY (HEAP) ..................................................... 566 8.4. Mechanizm składowania BDB (ang. BerkeleyDB).............................................. 569 8.4.1. Systemy operacyjne obsługiwane przez BDB........................................ 569 8.4.2. Instalowanie BDB.................................................................................. 570 8.4.3. Opcje startowe BDB .............................................................................. 570 8.4.4. Cechy tabel BDB ................................................................................... 572 8.4.5. Rzeczy wymagające naprawienia w BDB.............................................. 574 8.4.6. Restrykcje do tabel BDB........................................................................ 574 8.4.7. Błędy, które mogą wystąpić, gdy używamy tabel BDB......................... 574 8.5. Mechanizm składowania ISAM........................................................................... 575 Rozdział 9. Mechanizm składowania InnoDB .................................................... 577 9.1. Ogólny przegląd InnoDB ..................................................................................... 577 9.2. Kontakt z twórcami InnoDB ................................................................................ 578 9.3. InnoDB w MySQL 3.23....................................................................................... 578 9.4. Konfiguracja InnoDB........................................................................................... 579 9.5. Opcje startowe InnoDB........................................................................................ 584 9.6. Tworzenie obszaru tabel InnoDB......................................................................... 588 9.6.1. Rozwiązywanie problemów inicjalizacji InnoDB.................................. 589 9.7. Tworzenie tabel InnoDB...................................................................................... 590 9.7.1. Wykorzystanie transakcji InnoDB przy użyciu różnych API................. 591 9.7.2. Konwertowanie tabel MyISAM na InnoDB........................................... 591 9.7.3. Działanie kolumny AUTO_INCREMENT w InnoDB........................... 592 9.7.4. Ograniczenia FOREIGN KEY ............................................................... 593 9.7.5. InnoDB i replikacja MySQL.................................................................. 597 9.7.6. Użycie dla każdej tabeli oddzielnego obszaru tabel ............................... 598 9.8. Dodawanie i usuwanie plików danych oraz dzienników InnoDB ........................ 600 9.9. Tworzenie kopii zapasowej i odzyskiwanie InnoDB ........................................... 602 9.9.1. Wymuszanie odzyskania danych............................................................ 603 9.9.2. Punkty kontrolne.................................................................................... 605 9.10. Przenoszenie bazy danych InnoDB na inną maszynę........................................... 605 9.11. Model transakcyjny oraz blokowania InnoDB..................................................... 606 9.11.1. InnoDB i AUTOCOMMIT .................................................................... 606 9.11.2. InnoDB i TRANSACTION ISOLATION LEVEL ................................ 607 9.11.3. Spójny odczyt bez zakładania blokady................................................... 609 9.11.4. Odczyty z blokadą SELECT … FOR UPDATE i SELECT … LOCK IN SHARE MODE ..................... 609 9.11.5. Blokowanie najbliższego klucza — zapobieganie problemom fantomów ...610 9.11.6. Przykład pokazujący działanie spójnych odczytów w InnoDB.............. 611 9.11.7. Blokady zakładane przez różne instrukcje SQL w InnoDB ................... 612 9.11.8. Niejawne zatwierdzenie lub wycofanie transakcji przez MySQL.......... 614 9.11.9. Detekcja zakleszczeń oraz wycofanie .................................................... 614 9.11.10. Jak radzić sobie z zakleszczeniami ........................................................ 615 9.12. Optymalizacja wydajności InnoDB — wskazówki.............................................. 616 9.12.1. SHOW INNODB STATUS i monitory InnoDB .................................... 618 9.13. Implementowanie wielokrotnej kontroli wersji.................................................... 623 9.14. Struktury tabel i indeksów ................................................................................... 624 9.14.1. Fizyczna struktura indeksu..................................................................... 625 9.14.2. Buforowanie wstawiania........................................................................ 625 9.14.3. Adaptujące się indeksy mieszające ........................................................ 625 9.14.4. Fizyczna struktura rekordu..................................................................... 626 Spis treści 9 9.15. Zarządzanie przestrzenią plików oraz dyskowymi operacjami wejścia-wyjścia .....627 9.15.1. Dyskowe operacje wejścia-wyjścia........................................................ 627 9.15.2. Bezpośrednie wykorzystanie urządzeń na obszar tablicowy .................. 627 9.15.3. Zarządzanie przestrzenią pliku............................................................... 628 9.15.4. Defragmentowanie tabeli ....................................................................... 629 9.16. Obsługa błędów ................................................................................................... 630 9.16.1. Kody błędów InnoDB ............................................................................ 630 9.16.2. Kody błędów systemu operacyjnego...................................................... 631 9.17. Ograniczenia tabel InnoDB.................................................................................. 636 9.18. Rozwiązywanie problemów związanych z InnoDB............................................. 638 9.18.1. Rozwiązywanie problemów związanych z operacjami na słownikach danych InnoDB ......................................... 638 Rozdział 10. Wstęp do MaxDB........................................................................... 641 10.1. Historia MaxDB................................................................................................... 641 10.2. Licencjonowanie i wsparcie techniczne ............................................................... 642 10.3. Linki związane z MaxDB..................................................................................... 642 10.4. Podstawowe założenia MaxDB............................................................................ 642 10.5. Różnice pomiędzy MaxDB a MySQL ................................................................. 642 10.6. Współdziałanie pomiędzy MaxDB a MySQL...................................................... 643 10.7. Zarezerwowane słowa MaxDB ............................................................................ 644 Dodatek A Rozwiązywanie problemów związanych z programami MySQL........... 649 A.1. Jak ustalić przyczynę problemu ........................................................................... 649 A.2. Popularne błędy powstające podczas używania programów MySQL.................. 651 A.2.1. Access denied......................................................................................... 651 A.2.2. Can’t connect to [local] MySQL server ................................................. 651 A.2.3. Client does not support authentication protocol ..................................... 654 A.2.4. Password Fails When Entered Interactively........................................... 655 A.2.5. Host nazwa_komputera is blocked ....................................................... 655 A.2.6. Too many connections ........................................................................... 655 A.2.7. Out of memory....................................................................................... 656 A.2.8. MySQL server has gone away ............................................................... 656 A.2.9. Packet too large...................................................................................... 658 A.2.10. Błędy połączenia oraz połączenia przerwane......................................... 659 A.2.11. The table is full ...................................................................................... 660 A.2.12. Can’t create/write to file......................................................................... 661 A.2.13. Commands out of sync........................................................................... 661 A.2.14. Ignoring user .......................................................................................... 661 A.2.15. Table nazwa_tabeli doesn’t exist.......................................................... 662 A.2.16. Can’t initialize character set................................................................... 662 A.2.17. File Not Found ....................................................................................... 663 A.3. Problemy związane z instalacją............................................................................ 664 A.3.1. Problemy przy konsolidacji z biblioteką klienta MySQL ...................... 664 A.3.2. Uruchamianie MySQL z konta zwykłego użytkownika......................... 665 A.3.3. Problemy z uprawnieniami do plików.................................................... 666 A.4. Problemy związane z administrowaniem ............................................................. 667 A.4.1. Jak ustawić hasło użytkownika root....................................................... 667 A.4.2. Co zrobić w przypadku powtarzających się awarii MySQL .................. 669 A.4.3. W jaki sposób MySQL obsługuje wypełniony dysk .............................. 672 A.4.4. Gdzie MySQL przechowuje pliki tymczasowe...................................... 673 A.4.5. Jak zabezpieczyć lub zmienić plik gniazda MySQL /tmp/mysql.sock... 674 A.4.6. Problemy związane ze strefą czasową.................................................... 675 Dodatek B Zmienne środowiska...................................................................... 677 Skorowidz...................................................................................... 679 Rozdział 2. Instalowanie MySQL W tym rozdziale wyjaśniono, jak pobrać i zainstalować MySQL: 0. Ustalić, czy dana platforma jest obsługiwana. Warto pamiętać, że nie we wszystkich obsługiwanych systemach oprogramowanie MySQL działa równie dobrze. W niektórych jest znacznie bardziej odporne i stabilne. Szczegółowe informacje na ten temat można znaleźć w punkcie 2.1.1. „Systemy operacyjne obsługiwane przez MySQL”. 0. Wybrać dystrybucję do zainstalowania. Dostępnych jest kilka wersji MySQL, a większość z nich ma kilka formatów dystrybucyjnych. Można wybierać spośród spakowanych dystrybucji zawierających programy binarne (wstępnie skompilowane) albo kod źródłowy. Udostępniamy też bieżące drzewo kodu źródłowego dla tych, którzy chcą zapoznać się z najnowszymi postępami i pomóc nam w testowaniu kodu. Aby ustalić, która wersja i typ dystrybucji są najodpowiedniejsze w danej sytuacji, należy przeczytać punkt 2.1.2. „Wybór dystrybucji MySQL”. 0. Pobrać dystrybucję do zainstalowania. Lista witryn, z których można pobrać MySQL znajduje się w punkcie 2.1.3. „Jak zdobyć MySQL?”. Integralność dystrybucji można sprawdzić według wskazówek podanych w punkcie 2.1.4. „Weryfikowanie integralności pakietu za pomocą sum kontrolnych MD5 albo narzędzia GnuPG”. 0. Zainstalować dystrybucję. Aby zainstalować MySQL z dystrybucji binarnej, należy postępować według wskazówek podanych w podrozdziale 2.2. „Standardowa instalacja MySQL z dystrybucji binarnej”. Aby zainstalować MySQL z dystrybucji źródłowej albo z bieżącego drzewa kodu źródłowego, należy postępować według wskazówek podanych w podrozdziale 2.3. „Instalacja MySQL z dystrybucji źródłowej”. Ci, którzy aktualizują serwer MySQL do nowszej wersji, a nie instalują go po raz pierwszy, powinni przeczytać podrozdział 2.5 „Instalowanie nowszej lub starszej wersji MySQL”. Znajdują się tam informacje o procedurze aktualizacji oraz o kwestiach, które należy rozważyć przed zainstalowaniem nowszej wersji. 78 Rozdział 2. ♦ Instalowanie MySQL Jeśli podczas instalacji wystąpią problemy, należy zajrzeć do podrozdziału 2.6. „Uwagi dotyczące poszczególnych systemów operacyjnych”, w którym omówiono rozwiązywanie problemów związanych z poszczególnymi platformami. 0. Wykonać konfigurację poinstalacyjną. Po zainstalowaniu MySQL należy przeczytać podrozdział 2.4. „Konfiguracja i testy poinstalacyjne”. Podrozdział ten zawiera ważne informacje o tym, jak upewnić się, że serwer MySQL działa prawidłowo. Opisuje też zabezpieczanie wstępnych kont MySQL, które nie mają haseł, dopóki użytkownik ich nie przypisze. Podrozdział ten dotyczy zarówno binarnej, jak i źródłowej dystrybucji MySQL. 0. Do uruchomienia skryptów testujących MySQL niezbędna jest obsługa języka Perl. Zobacz podrozdział 2.7. „Uwagi dotyczące instalacji języka Perl”. 2.1. Ogólne kwestie instalacyjne Przed zainstalowaniem MySQL należy wykonać poniższe czynności: 0. Ustalić, czy MySQL działa na wybranej platformie. 0. Wybrać dystrybucję do zainstalowania. 0. Pobrać dystrybucję i sprawdzić jej integralność. Niniejszy podrozdział zawiera informacje niezbędne do wykonania tych czynności. Po ich wykonaniu można skorzystać ze wskazówek podanych w następnych podrozdziałach, aby zainstalować wybraną dystrybucję. 2.1.1. Systemy operacyjne obsługiwane przez MySQL W tym punkcie wymieniono systemy operacyjne, w których można uruchomić MySQL. Używamy programu GNU Autoconf, aby MySQL można było przenieść do wszystkich nowoczesnych systemów operacyjnych, które mają kompilator C++ i działającą im- plementację wątków POSIX. (Obsługa wątków jest potrzebna do działania serwera. Do skompilowania kodu klienta wystarczy kompilator C++.) My używamy oprogramowa- nia MySQL i rozwijamy je główne w systemach Linux (SuSE i Red Hat), FreeBSD oraz Sun Solaris (wersje 8 i 9). MySQL można skompilować w poniższych kombinacjach systemu operacyjnego i pa- kietu wątków. W wielu systemach operacyjnych natywna obsługa wątków działa tylko w najnowszych wersjach. (cid:141) AIX 4.x, 5.x z natywną obsługą wątków (zobacz podpunkt 2.6.5.3. „Uwagi dotyczące systemu IBM-AIX”), (cid:141) Amiga, (cid:141) BSDI 2.x z pakietem MIT-pthreads (zobacz podpunkt 2.6.4.5. „Uwagi dotyczące systemu BSD/OS 2.x”), 2.1. Ogólne kwestie instalacyjne 79 (cid:141) BSDI 3.0, 3.1 i 4.x z natywną obsługą wątków (zobacz podpunkt 2.6.4.5. „Uwagi dotyczące systemu BSD/OS 2.x”), (cid:141) DEC UNIX 4.x z natywną obsługą wątków (zobacz podpunkt 2.6.5.5. „Uwagi dotyczące systemu Alpha-DEC-Unix (Tru64)”), (cid:141) FreeBSD 2.x z pakietem MIT-pthreads (zobacz podpunkt 2.6.4.1. „Uwagi dotyczące systemu FreeBSD”), (cid:141) FreeBSD 3.x i 4.x z natywną obsługą wątków (zobacz podpunkt 2.6.4.1. „Uwagi dotyczące systemu FreeBSD”), (cid:141) FreeBSD 4.x z biblioteką LinuxThreads (zobacz podpunkt 2.6.4.1. „Uwagi dotyczące systemu FreeBSD”), (cid:141) HP-UX 10.20 z wątkami DCE albo pakietem MIT-pthreads (zobacz podpunkt 2.6.5.1. „Uwagi dotyczące systemu HP-UX 10.20”), (cid:141) HP-UX 11.x z natywną obsługą wątków (zobacz podpunkt 2.6.5.2. „Uwagi dotyczące systemu HP-UX 11.x”), (cid:141) Linux 2.0+ z biblioteką LinuxThreads 0.7.1+ albo glibc 2.0.7+ (zobacz punkt 2.6.1. „Uwagi dotyczące systemu Linux”), (cid:141) Mac OS X (zobacz punkt 2.6.2. „Uwagi dotyczące systemu Mac OS X”), (cid:141) NetBSD 1.3 i 1.4 Intel oraz NetBSD 1.3 Alpha (wymaga programu GNU make; zobacz podpunkt 2.6.4.2. „Uwagi dotyczące systemu NetBSD”), (cid:141) Novell NetWare 6.0 (zobacz punkt 2.2.4. „Instalowanie MySQL w systemie NetWare”), (cid:141) OpenBSD 2.5 z natywną obsługą wątków, OpenBSD 2.5 z pakietem MIT-pthreads (zobacz podpunkt 2.6.4.3. „Uwagi dotyczące systemu OpenBSD 2.5”), (cid:141) OS/2 Warp 3, FixPack 29 oraz OS/2 Warp 4, FixPack4 (zobacz punkt 2.6.6. „Uwagi dotyczące systemu OS/2”), (cid:141) SCO OpenServer z nową wersją pakietu FSU Pthreads (zobacz podpunkt 2.6.5.8. „Uwagi dotyczące systemu SCO”), (cid:141) SCO UnixWare 7.1.x (zobacz podpunkt 2.6.5.9. „Uwagi dotyczące systemu SCO UnixWare 7.1.x”), (cid:141) SGI Irix 6.x z natywną obsługą wątków (zobacz podpunkt 2.6.5.7. „Uwagi dotyczące systemu SGI Irix”), (cid:141) Solaris 2.5 i nowsze wersje z natywną obsługą wątków na procesorach SPARC i x86 (zobacz punkt 2.6.3. „Uwagi dotyczące systemu Solaris”), (cid:141) SunOS 4.x z pakietem MIT-pthreads (zobacz punkt 2.6.3. „Uwagi dotyczące systemu Solaris”), (cid:141) Tru64 Unix, (cid:141) Windows 9x, Me, NT, 2000 oraz XP (zobacz punkt 2.2.1. „Instalowanie MySQL w Windows”). 80 Rozdział 2. ♦ Instalowanie MySQL Nie na wszystkich platformach oprogramowanie MySQL działa z taką samą wydajno- ścią. Zdolność danej platformy do obsługi mocno obciążonego, krytycznego serwera MySQL zależy od następujących czynników: (cid:141) Ogólnej stabilności biblioteki wątków. Platforma może cieszyć się doskonałą reputacją, ale jeśli biblioteka wątków zawiera niestabilny kod wywoływany przez MySQL, to oprogramowanie MySQL również będzie niestabilne, nawet jeśli wszystko inne działa idealnie. (cid:141) Zdolności jądra systemu oraz biblioteki wątków do wykorzystania symetrycznych systemów wieloprocesorowych (SMP). Innymi słowy, wątek utworzony przez proces powinien móc działać na innym procesorze niż pierwotny proces. (cid:141) Zdolności jądra systemu oraz biblioteki wątków do wykonywania wielu wątków, które często zakładają i zwalniają muteks na krótkim, krytycznym obszarze kodu, bez nadmiernego przełączania kontekstów. Jeśli implementacja funkcji pthread_mutex_lock() zbyt szybko oddaje czas procesora, wydajność MySQL znacznie się zmniejsza. Jeśli ta kwestia nie zostanie rozwiązana, dodanie kolejnych procesorów tylko spowolni działanie MySQL. (cid:141) Ogólnej stabilności i wydajności systemu plików. (cid:141) Jeśli tabele są duże — od tego, czy system plików w ogóle potrafi obsługiwać duże pliki, a jeśli tak, to czy obsługuje je wydajnie. (cid:141) Wiedzy programistów firmy MySQL AB o danej platformie. Jeśli dobrze znamy platformę, włączamy specyficzne optymalizacje i poprawki podczas kompilacji oprogramowania. Możemy również doradzić, jak optymalnie skonfigurować system na użytek MySQL. (cid:141) Liczby testów, które wykonaliśmy wewnętrznie w podobnych konfiguracjach. (cid:141) Liczby użytkowników, którzy z powodzeniem używają MySQL na podobnie skonfigurowanych platformach. Jeśli ta liczba jest duża, prawdopodobieństwo wystąpienia problemów specyficznych dla platformy jest znacznie mniejsze. Według powyższych kryteriów, obecnie najlepszą platformą do uruchamiania My- SQL jest komputer x86 z systemem SuSE Linux i jądrem 2.4 oraz systemem plików ReiserFS (albo podobną dystrybucją systemu Linux) lub komputer SPARC z systemem Solaris (2.7-9). FreeBSD zajmuje trzecie miejsce, ale liczymy na to, że po ulepszeniu biblioteki wątków dołączy do elity. Mamy też nadzieję, że kiedyś do tej kategorii będzie można zaliczyć wszystkie inne platformy, na których można skompilować i urucho- mić MySQL, choć z nieco gorszą stabilnością i wydajnością. Będzie to wymagało współ- pracy z twórcami systemów operacyjnych i komponentów bibliotecznych, z których korzysta MySQL. Osoby, które są zainteresowane ulepszeniem któregoś z tych kom- ponentów, mają wpływ na ich rozwój i potrzebują dokładniejszych informacji o tym, co trzeba zrobić, aby oprogramowanie MySQL działało lepiej, powinny przesłać wiadomość na listę dyskusyjną internals. Zobacz podpunkt 1.7.1.1. „Listy dyskusyjne MySQL”. Chcemy podkreślić, że powyższe porównanie nie ma sugerować, że jeden system ope- racyjny jest gorszy albo lepszy od drugiego. Mówimy tylko o wyborze systemu opera- cyjnego do specyficznego celu: uruchamiania serwera MySQL. Wynik porównania 2.1. Ogólne kwestie instalacyjne 81 byłby inny, gdybyśmy wzięli pod uwagę więcej czynników. W niektórych przypad- kach wyższość jednego systemu operacyjnego nad drugim może wynikać z tego, że włożyliśmy więcej pracy w testowanie i optymalizowanie serwera pod kątem konkretnej platformy. Podajemy tylko nasze spostrzeżenia, aby ułatwić użytkownikowi wybór plat- formy dla serwera MySQL. 2.1.2. Wybór dystrybucji MySQL Podczas przygotowywania się do instalacji MySQL należy zdecydować się na którąś z wersji. Oprogramowanie MySQL jest rozwijane w kilku seriach, a użytkownik może wybrać tę, która najlepiej odpowiada jego wymaganiom. Po wybraniu wersji można wybrać format dystrybucji. Poszczególne wersje są dostępne w formacie binarnym lub źródłowym. 2.1.2.1. Wybór wersji MySQL Użytkownik musi najpierw zdecydować, czy chce korzystać z wersji produkcyjnej (stabilnej), czy rozwojowej. Istnieje wiele serii oprogramowania MySQL znajdujących się w różnych fazach dojrzałości: (cid:141) MySQL 5.0 to najnowsza seria wersji rozwojowych, do których dodawanych jest wiele nowych funkcji. Do niedawna była dostępna tylko w postaci demonstracyjnej w repozytorium kodu źródłowego BitKeeper. Obecnie wydano wersję alfa, aby mogło ją przetestować więcej użytkowników. (cid:141) MySQL 4.1 to seria wersji rozwojowych, do których dodano ważne nowe funkcje. Obecnie ma status beta. Dostępny jest kod źródłowy i pliki binarne, które można testować w systemach pilotażowych. (cid:141) MySQL 4.0 to bieżąca seria wersji produkcyjnych (stabilnych). Nowe wydania mają na celu poprawienie usterek. Nie dodaje się żadnych nowych funkcji, które mogłyby naruszyć stabilność kodu. (cid:141) MySQL 3.23 to poprzednia seria wersji produkcyjnych (stabilnych). Ta seria nie jest już rozwijana, więc nowe wydania mają na celu tylko poprawienie krytycznych usterek. Nie jesteśmy zwolennikami całkowitego zamrożenia kodu, ponieważ eliminuje to również poprawki usterek oraz rzeczy, które „trzeba zrobić”. Sformułowanie „prawie zamro- żony” oznacza, że możemy wprowadzić niewielkie zmiany, które „niemal na pewno nie wpłyną na to, co już działa prawidłowo”. Oczywiście, poprawki starszych wersji są przenoszone również do nowszych. Tym, którzy zaczynają korzystać z oprogramowania MySQL albo próbują przenieść je do systemu, który nie ma dystrybucji binarnej, polecamy skorzystanie z bieżącej wersji produkcyjnej. Obecnie jest to MySQL 4.0. Wszystkie wersje MySQL, również te z serii rozwojowych, są sprawdzane za pomocą narzędzi MySQL i obszernych ze- stawów testowych, zanim zostaną opublikowane. 82 Rozdział 2. ♦ Instalowanie MySQL Ci, którzy korzystają ze starego systemu i chcą go zaktualizować, ale woleliby unik- nąć związanych z tym problemów, powinni zainstalować najnowszą wersję z obecnie używanej serii (taką, w której tylko ostatnia część numeru wersji jest większa od obec- nie używanej). W tej wersji staraliśmy się naprawić tylko krytyczne usterki i wprowadzić niewielkie, względnie bezpieczne zmiany. Użytkownicy chcący korzystać z nowych funkcji, których nie ma w bieżącej serii pro- dukcyjnej, mogą zainstalować wersję z serii rozwojowej. Należy jednak pamiętać, że wersje rozwojowe są mniej stabilne od produkcyjnych. Ci, którzy chcą używać najnowszych wersji źródłowych ze wszystkimi bieżącymi po- prawkami usterek, mogą skorzystać z jednego spośród naszych repozytoriów BitKe- eper. Nie są to „wydania” jako takie, ale udostępniamy je jako wersję demonstracyjną kodu, na którym będą oparte przyszłe wydania. W schemacie nazewniczym MySQL nazwy wydań składają się z trzech liczb i przy- rostka, na przykład mysql-4.1.2-alpha. Liczby w nazwie wydania należy interpreto- wać następująco: (cid:141) Pierwsza liczba (4) wskazuje główny numer wersji, a także format pliku. Wszystkie wydania wersji 4 mają ten sam format pliku. (cid:141) Druga liczba (1) to poziom wydania. Główny numer wersji oraz poziom wydania razem tworzą numer serii. (cid:141) Trzecia liczba (2) to numer wersji w obrębie danej serii. Jest on zwiększany w każdym nowym wydaniu. Zwykle należy zaopatrzyć się w najnowszą wersję z wybranej serii. Podczas każdej pomniejszej aktualizacji zwiększana jest ostatnia liczba w numerze wersji. Kiedy wprowadzane są nowe funkcje albo pomniejsze niezgodności z poprzed- nią wersją, zwiększana jest druga liczba. Kiedy zmienia się format pliku, zwiększana jest pierwsza liczba. W nazwach wydań znajduje się również przyrostek, który wskazuje stabilność wyda- nia. W poszczególnych wydaniach należących do danej serii przyrostek zmienia się zgodnie z rosnącym poziomem stabilności. Oto możliwe przyrostki: (cid:141) Przyrostek alpha wskazuje, że wydanie zawiera duże fragmenty nowego kodu, który nie został przetestowany w 100 procentach. Znane usterki (zwykle takich nie ma) powinny być udokumentowane w rozdziale „News” podręcznika online pod adresem http://dev.mysql.com/doc/mysql/en/News.html. W większości wydań alfa znajdują się także nowe polecenia i rozszerzenia. Wydanie alfa jest aktywnie rozwijane, co może prowadzić do istotnych zmian w kodzie, ale wszystko jest testowane przed opublikowaniem wydania. Z tej przyczyny w żadnym wydaniu MySQL nie powinno być znanych usterek. (cid:141) Przyrostek beta oznacza, że nowy kod został przetestowany. Nie dodano żadnych nowych funkcji, które mogłyby spowodować uszkodzenie starego kodu. W wersji beta nie powinno być żadnych znanych usterek. Zmiana 2.1. Ogólne kwestie instalacyjne 83 wersji alfa na beta następuje wtedy, gdy nikt nie zgłosi krytycznych usterek w wersji alfa przez co najmniej miesiąc i nie zamierzamy dodawać nowych funkcji, które mogłyby zakłócić działanie starych poleceń. (cid:141) Wersja gamma to wersja beta, która od pewnego czasu znajduje się w obiegu i wydaje się działać prawidłowo. Do wersji gamma dodawane są tylko niewielkie poprawki. Taką wersję inne firmy nazywają wydaniem. (cid:141) Jeśli w nazwie brak przyrostka, oznacza to, że dana wersja była używana przez pewien czas w wielu różnych ośrodkach bez raportów o usterkach (nie licząc usterek specyficznych dla platformy). Do takiego wydania dodawane są tylko poprawki krytycznych usterek. Taką wersję nazywamy wydaniem produkcyjnym (stabilnym). MySQL używa nieco odmiennej konwencji nazewniczej niż inne produkty. Ogólnie rzecz biorąc, można względnie bezpiecznie używać każdej wersji, która jest dostępna od kilku tygodni i nie została zastąpiona nową wersją z określonej serii. Wszystkie wydania MySQL są poddawane standardowym testom poprawności i wy- dajności, co ma gwarantować względne bezpieczeństwo ich użycia. Ponieważ stan- dardowe testy są z czasem rozszerzane o funkcje wykrywania wszystkich uprzednio znalezionych usterek, zestaw testowy staje się coraz lepszy. Wszystkie wydania są testowane przynajmniej za pomocą: (cid:141) Wewnętrznego zestawu testowego Katalog mysql-test zawiera obszerny zbiór przypadków testowych. Wykonujemy te testy na praktycznie każdym wydaniu binarnym serwera. (cid:141) Zestawu testów wydajnościowych MySQL Ten zestaw wykonuje różne często używane zapytania. Pozwala też sprawdzić, czy najnowsze optymalizacje rzeczywiście przyspieszyły kod. Zobacz punkt 6.1.4. „Pakiet testowania wydajności MySQL”. (cid:141) Testu crash-me Ten test próbuje ustalić, jakie funkcje obsługuje baza danych i jakie są jej możliwości oraz ograniczenia. Zobacz punkt 6.1.4. „Pakiet testowania wydajności MySQL”. Inny test polega na tym, że używamy najnowszej wersji MySQL w naszym wewnętrz- nym środowisku produkcyjnym, w przynajmniej jednym serwerze. Mamy ponad 100 GB danych, z którymi może pracować serwer. 2.1.2.2. Wybór formatu dystrybucji Po wybraniu wersji MySQL trzeba zdecydować, czy zainstalowana zostanie dystry- bucja binarna, czy źródłowa. W większości przypadków lepiej jest użyć dystrybucji binarnej, jeśli dostępna jest wersja przeznaczona dla danej platformy. Dystrybucje bi- narne są dostępne w natywnych formatach wielu platform, takich jak linuksowe pliki RPM albo pakiety DMG dla systemu Mac OS X. Dostępne są też w postaci archiwów Zip albo skompresowanych plików tar. 84 Rozdział 2. ♦ Instalowanie MySQL Oto powody, dla których warto wybrać dystrybucję binarną: (cid:141) Dystrybucje binarne zwykle łatwiej jest zainstalować niż dystrybucje źródłowe. (cid:141) Aby spełnić wymagania różnych użytkowników, udostępniamy dwie wersje binarne: jedną skompilowaną z nietransakcyjnymi mechanizmami składowania (mały, szybki plik binarny) i jedną uzupełnioną najważniejszymi rozszerzeniami, takimi jak tabele transakcyjne. Obie wersje są kompilowane z tej samej dystrybucji źródłowej. Wszystkie natywne klienty MySQL mogą łączyć się z obiema wersjami serwera MySQL. Rozszerzona dystrybucja binarna MySQL jest oznaczona przyrostkiem -max i skonfigurowana z tymi samymi opcjami co mysqld-max. Zobacz punkt 4.1.2. „Rozszerzony serwer MySQL mysqld-max”. Ci, którzy chcą użyć pakietu RPM MySQL-Max, muszą najpierw zainstalować pakiet RPM MySQL-Server. W niektórych okolicznościach lepiej jest zainstalować MySQL z dystrybucji źródłowej: (cid:141) Serwer MySQL ma być zainstalowany w konkretnej lokalizacji. Standardowe dystrybucje binarne mogą działać w dowolnym katalogu, ale niektórzy chcą mieć jeszcze większą swobodę rozmieszczania poszczególnych komponentów MySQL. (cid:141) Serwer mysqld ma być wyposażony w dodatkowe funkcje, które nie są dołączone do standardowej dystrybucji źródłowej. Oto lista najczęściej używanych opcji dodatkowych: (cid:141) --with-innodb (opcja domyślna w MySQL 4.0 i nowszych wersjach) (cid:141) --with-berkeley-db (niedostępna na niektórych platformach) (cid:141) --with-raid (cid:141) --with-libwrap (cid:141) --with-named-z-libs (używana podczas kompilowania niektórych plików binarnych) (cid:141) --with-debug[=full] (cid:141) Serwer mysqld ma być pozbawiony niektórych funkcji, które są dołączone do standardowej dystrybucji źródłowej. Dystrybucje są na przykład kompilowane z obsługą wszystkich zestawów znaków. Ci, którzy chcą zmniejszyć serwer, mogą skompilować go z obsługą tylko tych zestawów, które są im potrzebne. (cid:141) Serwer będzie kompilowany za pomocą specjalnego kompilatora (takiego jak pgcc) albo z opcjami zoptymalizowanymi pod kątem konkretnego procesora. Dystrybucje binarne są kompilowane z opcjami, które powinny działać na różnych procesorach z danej rodziny. (cid:141) Użytkownik chce wykorzystać najnowsze źródła z repozytorium BitKeeper, aby uzyskać dostęp do najnowszych poprawek. Jeśli ktoś na przykład odkryje usterkę i poinformuje o niej zespół programistów MySQL, poprawka zostanie umieszczona w repozytorium źródłowym. Poprawka zostanie dołączona do wersji binarnej dopiero podczas publikacji kolejnego wydania MySQL. 2.1. Ogólne kwestie instalacyjne 85 (cid:141) Użytkownik chce przeczytać (lub zmodyfikować) kod C i C++ składający się na MySQL. W takim przypadku należy pobrać dystrybucję źródłową, ponieważ kod źródłowy zawsze jest najbardziej definitywnym podręcznikiem. (cid:141) Dystrybucje źródłowe zawierają więcej testów i przykładów niż dystrybucje binarne. 2.1.2.3. Jak i kiedy publikowane są aktualizacje? Serwer MySQL rozwija się bardzo szybko, a firma MySQL AB chętnie dzieli się naj- nowszymi postępami z innymi użytkownikami MySQL. Próbujemy opublikować nową wersję, kiedy dodamy do niej przydatne funkcje, których potrzebują inni użytkownicy. Próbujemy także pomóc użytkownikom proszącym o dodanie funkcji, które są łatwe w implementacji. Uwzględniamy życzenia naszych licencjonowanych użytkowników, a szczególną uwagę zwracamy na to, czego potrzebują abonenci pomocy technicznej, i próbujemy im pomóc. Nie każdy musi pobierać nową wersję. W rozdziale „News” podręcznika online można sprawdzić, czy nowa wersja zawiera coś, co jest rzeczywiście potrzebne. Zobacz http:// dev.mysql.com/doc/mysql/en/News.html. Aktualizacje MySQL podlegają poniższym zasadom: (cid:141) Publikowane są wydania w ramach każdej serii. W każdym wydaniu ostatnia liczba numeru wersji jest większa o jeden niż w poprzednim wydaniu z tej samej serii. (cid:141) Wydania produkcyjne (stabilne) pojawiają się raz lub dwa razy na rok. W razie znalezienia niewielkich usterek zostanie jednak opublikowane wydanie zawierające tylko ich poprawki. (cid:141) Wydania robocze oraz poprawki starszych wydań pojawiają się co 4 – 8 tygodni. (cid:141) Tworzymy dystrybucje binarne głównych wydań dla niektórych platform. Inni tworzą dystrybucje binarne dla pozostałych systemów, ale prawdopodobnie z mniejszą częstotliwością. (cid:141) Udostępniamy poprawki, kiedy tylko zidentyfikujemy i poprawimy niewielkie, ale irytujące usterki. Poprawki są natychmiast udostępniane w repozytoriach BitKeeper i zostają dołączone do następnego wydania. (cid:141) W razie znalezienia krytycznego błędu w wydaniu, jak najszybciej przygotujemy nowe wydanie (chcielibyśmy, żeby inne firmy również tak postępowały!). 2.1.2.4. Filozofia publikowania wydań — żadnych znanych usterek w wydaniu Wkładamy mnóstwo wysiłku w to, aby wydania były wolne od usterek. O ile nam wiadomo, nie opublikowaliśmy choćby jednej wersji MySQL ze znaną „krytyczną” usterką (usterka „krytyczna” to coś, co załamuje normalnie używany serwer MySQL, powoduje zwrócenie błędnej odpowiedzi na poprawne zapytanie albo narusza bezpie- czeństwo). 86 Rozdział 2. ♦ Instalowanie MySQL Dokumentujemy wszystkie nierozwiązane problemy, usterki i kwestie mające związek z decyzjami projektowymi. Zobacz punkt 1.8.7. „Znane błędy i wady projektowe MySQL”. Naszym celem jest naprawienie wszystkiego, co można naprawić, bez naruszania sta- bilności danej wersji MySQL. W niektórych przypadkach oznacza to, że możemy roz- wiązać problem w wersjach rozwojowych, ale nie w stabilnych (produkcyjnych). Oczy- wiście, dokumentujemy takie problemy, aby użytkownicy o nich wiedzieli. Oto procedura budowania nowych wersji MySQL: (cid:141) Monitorujemy usterki przesyłane na naszą listę pomocy technicznej, do bazy usterek pod adresem http://bugs.mysql.com/ oraz na zewnętrzne listy dyskusyjne MySQL. (cid:141) Wszystkie zgłoszone usterki są wprowadzane do bazy usterek. (cid:141) Kiedy poprawiamy usterkę, staramy się utworzyć odpowiedni przypadek testowy i dołączyć go do naszego zestawu testowego, aby upewnić się, że w razie ponownego wystąpienia usterki zostanie ona wykryta (niemal 90 procent poprawionych usterek ma swój przypadek testowy). (cid:141) Tworzymy przypadki testowe dla wszystkich nowych funkcji, które dodajemy do MySQL. (cid:141) Zanim zaczniemy budować nowe wydanie MySQL, sprawdzamy, czy wszystkie zgłoszone, powtarzalne usterki poszczególnych wersji (3.23.x, 4.0
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

MySQL. Podręcznik administratora
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: