Miesięcznik informatyków i menedżerów IT sektora publicznego

Artur Pęczak

Kopie zapasowe MySQL

Mysqldump to znakomite narzędzie backupu MySQL z zaawansowanymi funkcjami. W środowiskach wymagających zapewnienia ciągłości działania stosuje się jednak bardziej wyrafinowane rozwiązania, np. MySQL Enterprise Backup czy Percona XtraBackup.

Otwarte narzędzie Percona XtraBackup jest solidną alternatywą dla komercyjnego rozwiązania MySQL Enterprise Backup. Program optymalizuje niektóre operacje dla platformy PerconaDB for MySQL. Niektóre mechanizmy realizowane są w nieco inny sposób niż w konkurencyjnym produkcie.

W podstawowym ujęciu backup baz danych dzielimy na logiczny (logical) oraz fizyczny (physical, raw). Backup logiczny polega na wygenerowaniu zestawu komend SQL, które mogą być użyte do odtworzenia struktury bazy danych (definicji obiektów) wraz z danymi zapisanymi w tabelach. Ten typ backupu dobrze nadaje się do „przechwytywania” niewielkiej ilości danych, które, podobnie zresztą jak strukturę samych tabel, można w miarę potrzeb łatwo edytować. Backup fizyczny zakłada zaś wykonanie kopii zapasowej katalogów i plików baz danych wraz z konfiguracją serwera.

Metoda ma znaczenie

Backup fizyczny jest szybszy od logicznego – pliki kopii zapasowych mają mniejszy rozmiar, a przy tym zapewniona jest większa elastyczność przy odzyskiwaniu danych. Backup fizyczny stosowany jest m.in. w oprogramowaniu MySQL Enterprise Backup i Percona XtraBackup. Odtwarzanie danych odbywa się na poziomie pojedynczych plików bazy danych, choć w przypadku InnoDB możliwe jest odtwarzanie danych na poziomie tabel, z których każda zapisywana jest w oddzielnym pliku. Backup fizyczny może zawierać pliki dziennika oraz pliki konfiguracyjne serwera. Zasadniczo, fizyczny backup wymaga wyłączenia instancji MySQL na czas wykonywania kopii zapasowej. W praktyce oprogramowanie backupu klasy korporacyjnej, np. wspomniane wyżej rozwiązania, wyposażono w mechanizmy, które pozwalają wykonać zrzut bazy InnoDB bez przerywania jej pracy.

Backup logiczny trwa dłużej, plik kopii zapasowej jest większy i nie wymaga przerywania pracy serwera MySQL. Podejście to umożliwia odzyskiwanie danych na poziomie baz danych i tabel niezależnie od używanego silnika. Wygenerowane pliki SQL mogą być łatwo przenoszone między serwerami SQL, również innego typu niż MySQL i jego pochodne. Backup logiczny nie zawiera natomiast plików konfiguracyjnych ani dzienników zdarzeń systemu bazodanowego.

Czy zatem narzędzia pokroju mysqldump, mydumper czy phpMyAdmin są skazane na zapomnienie, skoro logiczny backup jest mniej efektywny? Nic z tych rzeczy. Wszystkie te programy doskonale spełniają swoją funkcję, jeśli chcemy backupować nieduże bazy lub przenosić dane między serwerami.

Na nieco wyższym poziomie możemy wyróżnić kilka metod i scenariuszy back­upu baz danych MySQL i ich późniejszego odtwarzania, z których najważniejsze to:

  • fizyczny backup plików i katalogów usługi MySQL,
  •  logiczny backup baz danych przy użyciu takich narzędzi, jak mysqldump i pochodnych,
  • migawki udziałów LVM, NFS lub obrazów maszyn wirtualnych,
  • „gorący” backup za pomocą dedykowanych narzędzi, jak MySQL Enterprise Backup czy Percona XtraBackup.

mysqldump

Wraz z MySQL rozpowszechniane jest podstawowe narzędzie do backupu logicznego baz danych o nazwie mysqldump. Wywoływane z wiersza poleceń oprogramowanie umożliwia wykonywanie zrzutów jednej lub większej liczby baz danych jednocześnie na potrzeby backupu lub migracji danych na inny serwer. Dodatkowo mysqldump obsługuje zapis danych formatów CSV, tekstu rozdzielonego (delimited) oraz XML. Mysqldump jest narzędziem, które oferuje wiele zaawansowanych funkcji pobierania i importowania danych do bazy MySQL. Oprogramowanie może łączyć się z lokalną lub zdalną instancją SQL, co jest niezwykle przydatne, jeśli utrzymujemy swoje serwery u dostawców hostingu lub w chmurze. Bolączką programu jest mało wydajne odtwarzanie danych z backupu. Z uwagi na to, że mamy tutaj do czynienia z backupem logicznym, mysqldump odtwarza strukturę bazy danych, wypełniając ją danymi z pliku. W rezultacie cały proces zajmuje sporo czasu.

phpMyAdmin

Wszyscy dostawcy hostingu wykonują kopie zapasowe stron WWW, baz danych i plików klientów w sposób zautomatyzowany. Problem w tym, że takie kopie przechowywane są od 3 do 7 dni, a odtworzenie obiektów z backupu może być dodatkowo płatne. Jednocześnie istnieje wiele powodów, dla których powinniśmy wykonywać lokalne kopie zapasowe, aby posiadać kolejną kopię danych w innej lokalizacji albo przenosząc strony WWW na inny serwer. W tych zastosowaniach mysqldump sprawdza się niezawodnie, o ile mamy dostęp SSH do powłoki zdalnego systemu.

Standardowym narzędziem udostępnianym na serwerach webowych jest graficzny phpMyAdmin, który umożliwia wykonywanie większości operacji bazodanowych na lokalnym lub odległym serwerze przez przeglądarkę internetową. Wbudowane funkcje importu i eksportu danych pozwalają na wygodne przenoszenie baz danych między serwerami. Narzędzie umożliwia import danych w formacie SQL, CSV, OpenDocument Spreadsheet, ESRI, tabel MediaWiki i XML, również z plików skompresowanych. Na etapie importu administrator może włączyć sprawdzanie kluczy obcych lub wymusić zachowanie zgodności SQL dla konkretnego typu bazy danych. Problem w tym, że phpMyAdmin nie radzi sobie najlepiej w przypadku importu dużych baz danych (PHP timeout limit). Wówczas należy posiłkować się systemowym mysqldump.

[...]

Autor zawodowo zajmuje się informatyką. Publikuje w magazynach komputerowych i serwisach internetowych.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma. Zapraszamy do składania zamówień na prenumeratę i numery archiwalne.
 
 

Polecamy

Biblioteka Informacja Publiczna

Specjalistyczne publikacje książkowe dla pracowników administracji publicznej

więcej