Jak wykonać kopię zapasową baz danych MySQL pięcioma różnymi metodami?

MySQL to popularny, otwarty system zarządzania relacyjnymi bazami danych, który jest szeroko stosowany w przedsiębiorstwach. Jak wykonać kopię zapasową MySQL, aby zapewnić bezpieczeństwo danych? Tutaj przedstawiamy 5 metod.

download-icon
Pobierz za darmo
for VM, OS, DB, File, NAS, etc.
maciej-kowalczyk

Zaktualizowane przez Maciej Kowalczyk na 2025/08/12

Lista treści
  • Typy kopii zapasowych bazy danych MySQL

  • Jak utworzyć kopię zapasową baz danych MySQL?

  • Podsumowanie

Im więcej danych jest przechowywanych w bazie danych, tym ważniejsze staje się tworzenie kopii zapasowych danych. Tworzenie kopii zapasowych bazy danych to bardzo krytyczne zadanie, które zapewnia, że firmy czy osoby indywidualne nie poniosą ogromnych strat w wyniku utraty danych. MySQL to popularny, otwartoźródłowy system zarządzania relacyjnymi bazami danych, szeroko stosowany w przedsiębiorstwach. W tym artykule omówimy, jak tworzyć kopie zapasowe bazy danych MySQL.

Typy kopii zapasowych bazy danych MySQL

W zależności od wielkości bazy danych istnieją cztery typy kopii zapasowych, stosowane w różnych okolicznościach:

Kopia zapasowa pełna

To powszechna metoda stosowana przez większość użytkowników. Pozwala ona na wykonanie kopii zapasowej całej bazy danych, w tym wszystkich obiektów bazy, takich jak tabele użytkownika, tabele systemowe, indeksy, widoki i procedury składowane. Jednak zajmuje więcej czasu i miejsca, dlatego zazwyczaj zaleca się wykonywanie pełnej kopii zapasowej raz w tygodniu.

Kopia zapasowa dziennika transakcji

Dziennik transakcji to oddzielny plik, który odnotowuje zmiany w bazie danych. Kopie zapasowe muszą skopiować jedynie zmiany wprowadzone w bazie danych od ostatniej kopii zapasowej, dlatego zajmuje to bardzo mało czasu. W celu zapewnienia solidności bazy danych zaleca się wykonywanie kopii zapasowych dziennika transakcji co godzinę lub nawet częściej.

Kopia różnicowa

Jest to inna metoda tworzenia kopii zapasowej tylko części bazy danych, nie wykorzystuje dziennika transakcji, zamiast tego wykorzystuje nowy obraz całej bazy danych. Jest mniejsza niż oryginalna kompletna kopia zapasowa, ponieważ zawiera tylko te bazy danych, które uległy zmianie od ostatniej pełnej kopii zapasowej. Ma ona przewagę szybkiego zapisywania i odzyskiwania. Zaleca się wykonywanie kopii różnicowej codziennie.

Kopia zapasowa pliku

Baza danych może składać się z wielu plików na dysku twardym. Jeśli baza danych jest bardzo duża i nie można jej wykonać kopii zapasowej w ciągu jednej nocy, można stosować kopie zapasowe plików, aby co noc tworzyć kopię części bazy danych. Ponieważ bazy danych zazwyczaj nie są tak duże, że trzeba używać wielu plików, ten typ kopii zapasowych nie jest zbyt często stosowany.

Zgodnie ze stanem bazy danych można ją podzielić na trzy typy:

1. Kopia zapasowa zimna

Kopia zapasowa typu cold to kopia wykonywana na danych, gdy baza danych jest offline i niedostępna dla użytkowników. Ponieważ kopie zapasowe są wykonywane w czasie, gdy baza danych jest offline, kopie typu cold są często nazywane również kopiami offline. Kopie zapasowe cold zużywają zazwyczaj mniej zasobów, a ponieważ nie można dodawać nowych danych (baza danych jest offline), proces tworzenia kopii zapasowej może skopiować wszystkie dane na raz. Kopie zapasowe cold mają oczywiście ograniczenie – baza danych nie może być używana podczas trwania operacji tworzenia kopii zapasowej.

2. Gorąca kopia zapasowa

Hot backups to kopie bezpieczeństwa wykonywane na danych, gdy baza danych jest włączona i dostępna dla użytkowników. Takie kopie są często bardzo wygodnym rozwiązaniem, ponieważ nie wymagają przestoju, a zakłócenia w działaniu systemu operacyjnego są minimalne, jednak mają również pewne wady: jeśli dane, z których tworzona jest kopia zapasowa, zostaną w jakikolwiek sposób zmodyfikowane w trakcie wykonywania kopii, backup może nie być identyczny z końcową wersją danych w bazie danych.

3. Kopia zapasowa logiczna

Kopia zapasowa logiczna wykorzystuje oprogramowanie do wydobywania danych z bazy danych i zapisuje wyniki do pliku.

Jak utworzyć kopię zapasową baz danych MySQL?

Istnieją logiczne i fizyczne kopie zapasowe w MySQL, w zależności od metody odzyskiwania kopii zapasowej. Kopia zapasowa logiczna polega na tworzeniu kopii zapasowych instrukcji SQL oraz ich wykonywaniu podczas odzyskiwania, aby odtworzyć dane bazy danych. Kopia zapasowa fizyczna kopiuje pliki bazy danych w tym samym formacie, w jakim są przechowywane na dysku.

Te dwa typy kopii zapasowych mają swoje zalety i wady. Ogólnie rzecz biorąc, szybkość odzyskiwania kopii fizycznej jest szybsza, ale zajmuje więcej miejsca, podczas gdy szybkość kopii logicznej jest wolniejsza, ale zajmuje mniej miejsca.

1. Korzystanie z mysqldump

Mysqldump to narzędzie do tworzenia kopii zapasowych, które jest dostarczane razem z MySQL w katalogu bin: /usr/local/mysql/bin/mysqldump. Obsługuje gorące kopie zapasowe oparte na innoDB. Jednak ponieważ jest to kopia logiczna, prędkość jej tworzenia nie jest zbyt duża, dlatego nadaje się do scenariuszy, w których ilość danych do backupu jest stosunkowo mała. Pełna kopia zapasowa mysqldump + dziennik binarny umożliwia odzyskanie danych do określonego momentu.

Dla tabel z silnikiem składowania MyISAM można używać tylko kopii zapasowej gorącej. W tym momencie należy zapobiec zapisywaniu danych, należy więc najpierw dodać blokadę odczytu. W tym przypadku można również ręcznie dodać blokadę odczytu w bazie danych, jednak jest to uciążliwe. Narzędzie mysqldump oferuje bezpośrednio opcję blokowania, czyli --lock-all-tables, na przykład: mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backup_test_`date +%F-%H-%M`.sql.

Jeśli tworzysz kopię zapasową pojedynczej tabeli, po prostu dodaj nazwę tabeli po nazwie biblioteki test.

Dla tabel przy użyciu silnika składowania innoDB, backup gorący może być wykonany bez blokowania bazy danych. Dodaj opcję do wykonywania backupu gorącego: --single-transaction, na przykład: mysqldump --databases test --single-transaction --flush-logs --master-data=2> /tmp/backup_test_`date+%F-%H-%M`.sql.

P.S. Pamiętaj, aby zamknąć dziennik binarny podczas przywracania:

mysql> set sql_log_bin=0;

Ponieważ jest to metoda tworzenia kopii zapasowej oparta na logice, wykonanie kodu SQL spowoduje wstawienie danych i zapisanie ich w dzienniku binarnym. W przypadku tej metody odzyskiwania, zapisywanie w dzienniku binarnym można wyłączyć, aby skrócić czas odzyskiwania.

Kliknij i dowiedz się więcej o kopii zapasowej i odzyskiwaniu bazy danych MySQL z lub bez Mysqldump.

2. Kopia zapasowa oparta na migawce LVM

Jeśli chodzi o kopie zapasowe fizyczne, istnieje kopia zapasowa fizyczna oparta na systemie plików (migawka LVM), można również bezpośrednio użyć poleceń takich jak tar, aby spakować i wykonać kopię zapasową całego katalogu bazy danych, jednak te mogą być używane tylko do zimnej kopii zapasowej. Różne silniki magazynujące tworzą kopie różnych treści. MyISAM automatycznie tworzy kopie na poziomie tabeli, podczas gdy InnoDB może wykonać kopię zapasową całej bazy danych tylko wtedy, gdy nie jest włączona niezależna przestrzeń tabeli.

Poniżej znajduje się wprowadzenie do korzystania z funkcji migawek LVM w celu tworzenia kopii zapasowych.

1) W celu zapewnienia bezpieczeństwa najpierw nałóż blokadę odczytu na bazę danych

mysql>FLUSH TABLES WITH READ LOCK

2) Odśwież dziennik binarny w celu przywracania do określonego punktu w czasie

mysql>FLUSH LOGS

3) Następnie utwórz wolumin migawki

lvcreate –L 1G –s –n data-snap –p –r /dev/myvg/mydata

4) Wejdź do bazy danych, aby zwolnić blokadę odczytu

UNLOCK TABLES

5) Zamontuj wolumin migawki do tworzenia kopii zapasowej

6) Na końcu spakuj i zabezpiecz pliki znajdujące się w katalogu /mnt/snap

Do przywracania:

1) zamknij mysqld

2) następnie wykonaj kopię zapasową dziennika binarnego

3) przywróć oryginalny plik kopii zapasowej

4) następnie przywróć do momentu błędu za pomocą dziennika binarnego (nie zapomnij tymczasowo wyłączyć dziennika binarnego podczas przywracania punktu czasowego przez dziennik binarny)

W latach 2010–2012, baza danych MySQL została wdrożona w chmurowym środowisku Amazon. Zapewnili oni migawki LVM, które są bardzo wygodne i szybkie. Korzystając z migawek LVM, przywracanie danych jest również bardzo szybkie w sieci 10G Amazonu.

3. Kopia zapasowa tar

Przygotuj się do pierwszej kopii zapasowej danych z bazy danych, tymczasowo zablokuj wszystkie tabele i otwórz okno 1

mysql> flush tables with read lock;

Zapytanie OK, 0 wierszy zaffected (0,00 sek.)

mysql> pokaż stan główny;

+++++
| File | Position | Binlog_Do_DB |Binlog_Ignore_DB |  
| mysql-bin.000003 | 194554 | | |  
1 row in set (0.00 sec)

To okno nie może zostać zamknięte i musi pozostać otwarte do momentu zakończenia pakowania tar.

--Re-open a shell window, go to the data file directory tar package
open window 2
[root@myfstv_21_11 data]# tar -zcvf mysqla1.tar.gz mysqla
tar -zcvf mysqla1.tar.gz mysqla Compressed
Switch to window 1 and execute the unlock command

mysql> unlock tables;

Skopiuj pakiet tar na inny serwer biblioteki MySQL , nadpisz katalog danych, a następnie uruchom ponownie usługę bazy danych MySQL.

4. xTraBackup dostarczany przez Percona

Obsługuje fizyczną gorącą kopię zapasową innoDB, obsługuje pełne kopie zapasowe i kopie przyrostowe, a prędkość jest bardzo duża, obsługuje migrację danych między różnymi bazami danych spowodowaną przez przechowywanie innoDB, oraz obsługuje tworzenie kopii zapasowych i odzyskiwanie na serwerze zapasowym w trybie replikacji. Aby xTraBackup mógł obsługiwać więcej rozszerzeń funkcyjnych, można skonfigurować niezależną przestrzeń tabel i włączyć funkcję innoDB_file_per_table. Następnie będzie można obsługiwać kopie zapasowe pojedynczych tabel.

Zasada kopii zapasowych xTraBackup:

xTraBackup opiera się na funkcji odzyskiwania po awarii systemu innoDB. Skopiuje on plik danych innoDB. Ponieważ tabela nie jest zablokowana, skopiowane dane są niespójne. Podczas odzyskiwania należy wykorzystać odzyskiwanie po awarii w celu uzyskania spójnych danych.

innoDB zachowuje dziennik powtórzeń, znany również jako dziennik transakcji, który zawiera wszystkie zmiany danych innoDB. Po uruchomieniu innoDB najpierw sprawdzi plik danych i dziennik transakcji, a następnie wykona następujące kroki:

Podczas tworzenia kopii zapasowej przez xTraBackup, kopiuje on dane innoDB strona po stronie, bez blokowania tabeli. W tym samym czasie xTraBackup posiada inny wątek do monitorowania dziennika transakcji. Gdy dziennik zostanie zmodyfikowany, zmienione strony dziennika zostaną skopiowane. Ze względu na ograniczony rozmiar pliku dziennika transakcji, po jego zapełnieniu zapis zostaje wznowiony od początku, w związku z czym nowe dane mogą zastąpić stare dane.

W trakcie procesu przygotowywania, xTraBackup wykorzystuje skopiowany dziennik transakcji do wykonania odzyskiwania po awarii na kopii zapasowej plików danych innoDB.

5. Tworzenie kopii zapasowych baz danych MySQL za pomocą programu Vinchin Backup & Recovery

Vinchin Backup & Recovery oferta szerokiej gamy funkcji umożliwiających ochronę baz danych zarówno na maszynach wirtualnych, jak i na serwerach fizycznych. Dzięki sprawnemu współdziałaniu z backupami na poziomie maszyn wirtualnych, użytkownicy środowisk wirtualnych otrzymują podwójną ochronę kluczowych danych i systemów informacyjnych. Vinchin Backup & Recovery umożliwia ochronę baz danych Oracle DB, MySQL, SQL Server, PostgreSQL, Postgres Pro oraz MariaDB zainstalowanych zarówno na maszynach fizycznych, jak i wirtualnych dzięki zaawansowanym funkcjom tworzenia kopii zapasowych i przywracania baz danych. Oferuje również strategie tworzenia kopii zapasowych: pełnej, różnicowej, przyrostowej oraz kopii dziennika transakcji, pozwalając na zaplanowanie własnego sposobu tworzenia kopii zapasowych zgodnie z potrzebami.

Vinchin Backup & Recovery obsługuje wydajne tworzenie kopii zapasowych „hot backup” dla MySQL, SQL Server i Oracle bez wpływu na normalną pracę baz danych.

Obsługa programu Vinchin Backup & Recovery jest bardzo prosta, wystarczy kilka kroków.

1. Wybierz obiekt kopii zapasowej.

Kopia zapasowa bazy danych MySQL

2. Wybierz miejsce docelowe kopii zapasowej.

Kopia zapasowa bazy danych MySQL

3. Skonfiguruj strategie tworzenia kopii zapasowych.

Kopia zapasowa bazy danych MySQL

4.Przejrzyj i wyślij zlecenie.

Kopia zapasowa bazy danych MySQL

Możesz zacząć korzystać z tego potężnego systemu dzięki 60-dniowej wersji próbnej z pełnymi funkcjami. Kliknij przycisk, aby pobrać pakiet instalacyjny. Kliknij tutaj, aby dowiedzieć się więcej o tworzaniu kopii zapasowych MySQL za pomocą Vinchin Backup & Recovery.

Podsumowanie

Baza danych MySQL jest powszechnie stosowana w wielu branżach. Aby zapewnić jej bezpieczeństwo, dzielimy się z Wami w tym artykule pięcioma różnymi metodami tworzenia kopii zapasowych danych MySQL. Możesz wybrać bardziej odpowiednią metodę, dostosowaną do własnej sytuacji. Na co czekasz? Zaraz wykonaj kopię zapasową swojej bazy danych MySQL!

Udostępnij:

Kategorie: Database Backup