Lepszym sposobem tworzenia kopii zapasowych i eksportowania bazy danych MySQL lub MariaDB jest wykonywanie zadania lokalnie na serwerze, dzięki czemu dane z tabel mogą być natychmiast zrzucane na dysk lokalny bez opóźnień. W ten sposób prędkość eksportu będzie szybsza i skróci czas blokowania dostępu do bazy danych MySQL lub MariaDB lub tabeli. Ten samouczek jest przewodnikiem na temat tworzenia kopii zapasowych (eksportowania) i przywracania (importowania) baz danych MySQL lub MariaDB na samym serwerze bazy danych za pomocą mysqldump i mysql narzędzia. Zasadniczo istnieją dwie metody tworzenia kopii zapasowych MySQL lub MariaDB , jedna to kopiowanie wszystkich plików tabel (pliki *.frm, *.MYD i *.MYI) lub użycie mysqlhotcopy narzędzie, ale działa tylko dla tabel MyISAM. Poniższy samouczek skoncentruje się na mysqldump, który działa zarówno dla tabel MyISAM, jak i InnoDB.
Jak wyeksportować, wykonać kopię zapasową lub zrzucić bazę danych MySQL lub MariaDB
Aby wyeksportować bazę danych MySQL lub MariaDB do pliku zrzutu, po prostu wpisz następującą składnię polecenia w powłoce. Możesz użyć Telnet lub SSH, aby zdalnie zalogować się do komputera, jeśli nie masz dostępu do skrzynki fizycznej.
mysqldump -u username -ppassword database_name > dump.sql
Zastąp nazwę użytkownika z ważnym identyfikatorem użytkownika MySQL lub MariaDB, hasło z poprawnym hasłem użytkownika (WAŻNE:bez spacji po -p i haśle, w przeciwnym razie mysqldump poprosi o hasło, ale potraktuje hasło jako nazwę bazy danych, więc tworzenie kopii zapasowej się nie powiedzie) i nazwa_bazy z rzeczywistą nazwą bazy danych, którą chcesz wyeksportować. Na koniec możesz umieścić dowolną nazwę dla wyjściowego pliku zrzutu SQL, tutaj był dump.sql .
Całe dane, tabele, struktury i baza danych database_name zostanie zarchiwizowana w pliku tekstowym SQL o nazwie dump.sql z powyższym poleceniem.
Jak wyeksportować tylko struktury bazy danych MySQL lub MariaDB
Jeśli nie potrzebujesz już danych w tabelach bazy danych (mało prawdopodobne), po prostu dodaj –no-data przełącz, aby wyeksportować tylko struktury tabel. Na przykład składnia to:
mysqldump -u username -ppassword --no-data database_name > dump.sql
Jak wykonać kopię zapasową tylko danych bazy danych MySQL lub MariaDB
Jeśli chcesz tylko utworzyć kopię zapasową danych, użyj –no-create-info opcja. Przy tym ustawieniu zrzut nie spowoduje ponownego utworzenia bazy danych, tabel, pól i innych struktur podczas importowania. Użyj tego tylko wtedy, gdy masz pewność, że masz zduplikowane bazy danych o tej samej strukturze, w których wystarczy odświeżyć dane.
mysqldump -u username -ppassword --no-create-info database_name > dump.sql
Jak zrzucić kilka baz danych MySQL lub MariaDB do pliku tekstowego
–bazy danych opcja pozwala określić więcej niż 1 bazę danych. Przykładowa składnia:
mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql
Jak zrzucić wszystkie bazy danych w MySQL lub MariaDB Server
Aby zrzucić wszystkie bazy danych, użyj –all-databases i nie trzeba już podawać nazwy bazy danych.
mysqldump -u username -ppassword --all-databases > dump.sql
Jak wykonać kopię zapasową tabel InnoDB online
Utwórz kopię zapasową bazy danych nieuniknione, ponieważ serwer MySQL lub MariaDB jest niedostępny dla aplikacji, ponieważ podczas eksportowania wszystkie tabele uzyskały globalną blokadę odczytu przy użyciu funkcji FLUSH TABLES WITH READ LOCK na początku zrzutu do zakończenia. Tak więc, chociaż instrukcje READ mogą być kontynuowane, wszystkie instrukcje INSERT, UPDATE i DELETE będą musiały stać w kolejce z powodu zablokowanych tabel, tak jakby MySQL lub MariaDB były wyłączone lub zablokowane. Jeśli korzystasz z InnoDB, –pojedyncza transakcja jest sposobem na zminimalizowanie czasu blokowania do prawie zerowego, tak jak przy wykonywaniu kopii zapasowej online. Działa poprzez odczytywanie współrzędnych dziennika binarnego, gdy tylko blokada zostanie nabyta, a następnie blokada jest natychmiast zwalniana.
Składnia:
mysqldump -u username -ppassword --all-databases --single-transaction > dump.sql
Jak przywrócić i zaimportować bazę danych MySQL lub MariaDB
Możesz przywrócić z phpMyAdmin, używając zakładki Importuj. Aby przyspieszyć, prześlij plik zrzutu na serwer MySQL lub MariaDB i użyj następującego polecenia, aby zaimportować bazy danych z powrotem na serwer MySQL lub MariaDB.
mysql -u username -ppassword database_name < dump.sqlJeśli chcesz połączyć się zdalnie z serwerami MySQL lub MariaDB na innym serwerze, dodaj -h nazwa-serwera-lub-adres-IP do polecenia.
Import i eksport bazy danych MySQL lub MariaDB jest nie tylko ważny dla odzyskania danych w przypadku katastrofy, ale także zapewnia łatwy sposób migracji lub przeniesienia na inny serwer, na przykład podczas zmiany dostawcy hostingu. Należy jednak pamiętać, że jeden powszechny problem – kodowanie zestawu znaków. Nowsze wydanie mysqldump używa UTF8 jako domyślnego zestawu znaków, jeśli nic nie jest określone, podczas gdy starsze wersje (zwykle starsze niż 4.1) używają Latin1 jako domyślnego zestawu znaków. Jeśli zestaw znaków bazy danych to Latin1 i zrzucasz je w sortowaniu UTF8, dane mogą stać się po prostu śmieciami, zniekształconymi lub nieczytelnymi (często zdarza się to w przypadku bloga WordPress). W takim przypadku użyj –default-character-set=charset_name możliwość określenia zestawu znaków lub przekonwertowania bazy danych na UTF8.