MySQL i MariaDB zawierają narzędzie mysqldump, które upraszcza proces tworzenia kopii zapasowej bazy danych lub systemu baz danych. Korzystanie z mysqldump
tworzy logiczną kopię zapasową . Możesz używać tego narzędzia tylko wtedy, gdy proces bazy danych jest dostępny i uruchomiony.
Jeśli Twoja baza danych jest z jakiegoś powodu niedostępna, możesz zamiast tego utworzyćfizyczną kopię zapasową , który jest kopią struktury systemu plików, która zawiera Twoje dane.
Instrukcje zawarte w tym przewodniku dotyczą zarówno MySQL, jak i MariaDB. Dla uproszczenia nazwa MySQL będzie używana w obu przypadkach.
Zanim zaczniesz
-
Do uruchomienia kopii zapasowej będziesz potrzebować działającej instalacji MySQL lub MariaDB oraz użytkownika bazy danych. Aby uzyskać pomoc dotyczącą instalacji, zapoznaj się z dokumentacją Linode MySQL.
-
Będziesz potrzebować dostępu root do systemu lub konta użytkownika z
sudo
przywileje.
Utwórz kopię zapasową bazy danych
mysqldump
ogólna składnia polecenia to:
mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
mysqldump
prosi o hasło przed rozpoczęciem procesu tworzenia kopii zapasowej.- W zależności od rozmiaru bazy danych, ukończenie może trochę potrwać.
- Kopia zapasowa bazy danych zostanie utworzona w katalogu, w którym uruchomiono polecenie.
-$(date +%F)
dodaje znacznik czasu do nazwy pliku.
Przykładowe przypadki użycia to:
-
Utwórz kopię zapasową całego systemu zarządzania bazą danych (DBMS):
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
-
Utwórz kopię zapasową określonej bazy danych. Zastąp
db1
z nazwą bazy danych, której kopię zapasową chcesz utworzyć:mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
-
Utwórz kopię zapasową pojedynczej tabeli z dowolnej bazy danych. W poniższym przykładzie
table1
jest eksportowany z bazy danychdb1
:mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
Oto podział mysqldump
opcje poleceń użyte powyżej:
--single-transaction
:Wydaj instrukcję BEGIN SQL przed zrzuceniem danych z serwera.--quick
:Wymuś zrzucanie tabel wiersz po wierszu. Zapewnia to dodatkowe bezpieczeństwo dla systemów z małą ilością pamięci RAM i/lub dużymi bazami danych, w których przechowywanie tabel w pamięci może stać się problematyczne.--lock-tables=false
:Nie blokuj tabel dla sesji kopii zapasowej.
Automatyzacja kopii zapasowych za pomocą crona
Wpisy można dodawać do /etc/crontab
aby regularnie planować tworzenie kopii zapasowych baz danych.
-
Utwórz plik do przechowywania danych logowania użytkownika root MySQL, który będzie wykonywał kopię zapasową. Zwróć uwagę, że użytkownik systemu, którego katalog domowy jest przechowywany w tym pliku, może nie być powiązany z żadnymi użytkownikami MySQL.
- Plik:/ home/przykładowy_użytkownik/.mojlogin.cnf
1 2 3
[client] user = root password = MySQL root user's password
-
Ogranicz uprawnienia pliku poświadczeń:
chmod 600 /home/example_user/.mylogin.cnf
-
Utwórz plik zadania cron. Poniżej znajduje się przykładowe zadanie cron do tworzenia kopii zapasowej całego systemu zarządzania bazą danych codziennie o godzinie 1:00:
- Plik:/ etc/cron.daily/mysqldump
1
0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql
Aby uzyskać więcej informacji o cronie, zobacz strony podręcznika cron(8) i cron(5).
Przywróć kopię zapasową
Ogólna składnia polecenia przywracania to:
mysql -u [username] -p [databaseName] < [filename].sql
-
Przywróć całą kopię zapasową DBMS. Zostaniesz poproszony o podanie hasła użytkownika root MySQL:
Spowoduje to nadpisanie wszystkich bieżących danych w systemie bazy danych MySQLmysql -u root -p < full-backup.sql
-
Przywróć pojedynczy zrzut bazy danych. Pusta lub stara docelowa baza danych musi już istnieć, aby zaimportować dane, a użytkownik MySQL, do którego uruchamiasz polecenie, musi mieć dostęp do zapisu w tej bazie danych:
mysql -u [username] -p db1 < db1-backup.sql
-
Przywróć pojedynczą tabelę, musisz mieć docelową bazę danych gotową do odbioru danych:
mysql -u dbadmin -p db1 < db1-table1.sql
Więcej informacji
Dodatkowe informacje na ten temat można znaleźć w poniższych zasobach. Chociaż są one dostarczane w nadziei, że będą przydatne, należy pamiętać, że nie możemy ręczyć za dokładność ani aktualność materiałów hostowanych zewnętrznie.
- Strona Metody tworzenia kopii zapasowych bazy danych MySQL
- mysqldump — program do tworzenia kopii zapasowych baz danych, instrukcja obsługi MySQL