Zaawansowane kopie zapasowe baz danych MySQL

Kiedy skończą Kopie zapasowe bazy danych MySQL, często używa się polecenia mysqldump brak opcji. Jednak to polecenie ma wiele ciekawych opcji, które pozwalają na wykonywanie zaawansowanych kopii zapasowych.

Domyślnie Polecenie mysqldump generuje kopię struktury sql wszystkich tabel w bazie danych wskazany w pliku tekstowym sql. Aby uwzględnić tylko jedną lub więcej tabel, wprowadź ich nazwy po nazwie bazy danych.

Z okna terminala w katalogu mysql:

 # Kopia zapasowa pojedynczej tabeli $ mysqldump -user = user --password = klucz bazy danych tabeli> backup_sql
 # Utwórz kopię zapasową trzech tabel $ mysqldump -user = user --password = klucz bazy danych table1 table2 table3> backup_sql
Przykłady 1 lub 3 tabel.

1. Wykluczanie niektórych tabel z kopii zapasowej


Aby nie uwzględniać konkretnej tabeli w kopii zapasowej, musimy ją wskazać opcją --ignore-table, której wartość należy wskazać

Jeśli na przykład wykonujesz kopię zapasową bazy danych o nazwie commerce, ale nie chcesz, aby została uwzględniona tabela o nazwie sprzedaż, uruchom następujące polecenie:

 $ mysqldump --user = użytkownik - hasło = hasło --ignore-table = kupiec.sprzedawca> backup_back.sql 
Innymi słowy, skopiuj całą bazę danych handlowych z wyjątkiem tabeli sprzedaży. Jeśli chcemy wykluczyć kilka tabel, musimy użyć następującego polecenia:
 $ mysqldump --user = użytkownik --password = hasło --ignore-table = commerce.sales --ignore-table = commerce.products --ignore-table = handel. ceny handlowe> backup_copy.sql
(Aby wykluczyć wiele tabel, podaj ich nazwy za pomocą tylu opcji --ignore-table)

2. Ograniczenie liczby rekordów w każdej tabeli


Domyślnie polecenie mysqldump skopiuje wszystkie rekordy ze wszystkich tabel. Jeśli chcesz wcześniej filtrować rekordy, dodaj opcję --where, która pozwala wskazać warunek typu WHERE, który jest dodawany do zapytań SELECT wykonywanych w celu wyodrębnienia wszystkich rekordów:
 $ mysqldump --user = użytkownik --password = hasło --where = "wiek> 18 ORAZ wiek backup_back.sql 
Jeśli chcemy wydobyć tylko niektóre rekordy z bazy, na przykład pierwsze 500
 $ mysqldump --user = użytkownik -password = hasło --where = baza danych "1 limit 500"> backup.sql
Zostałyby wydobyte z limitem 500.

3. Skopiuj tylko strukturę tabel, ale nie ich dane


Domyślnie Komenda mysqldump zrzuca zarówno strukturę tabel, jak i wszystkie ich informacje. Jeśli interesuje Cię tylko zrzucanie struktury tabel i kolumn, użyj opcji --no-data. Możesz więc utworzyć kolejną bazę danych dokładnie taką samą, ale pustą:
 $ mysqldump --user = użytkownik --password = hasło --no-data database> backup_sql
Zwykle po wygenerowaniu wstawek są one grupowane w jedną instrukcję, aby zapisać wiersze kodu w następujący sposób:
 INSERT INTO table VALUES (1, 'name1'), (2, 'name2'), (3, 'name3');
Jest to zachowanie, które może powodować błędy w starszych systemach, które nie mogą przetwarzać długich linii. Podobnie możesz napotkać problemy z edytorem tekstu podczas próby otwarcia pliku kopii zapasowej, który zawiera te długie wiersze.

Jeśli mamy do czynienia z takim przypadkiem, możemy dodać opcję --extended-insert = false aby każda INSERT była uruchamiana z własnym oświadczeniem:

 $ mysqldump --user = użytkownik -password = hasło --extended-insert = false baza danych> backup_sql
Wynik będzie następujący:
 INSERT INTO table VALUES (1, 'nazwa1'); INSERT INTO table VALUES (2, 'nazwa2'); INSERT INTO table VALUES (3, 'nazwa3'); 

Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt
wave wave wave wave wave