Program mysqldump opcje i komendy

Program mysqldump jest domyślnym narzędziem do backupu dostarczanym wraz z MySQL. Unixowa natura czyni go  bezkonkurencyjnym  o ile tylko jesteśmy gotowi poświęcić nieco czasu na naukę jego obsługi.

Zakładając, że interesująca nas baza jest chroniona hasłem aby wykonać jakiekolwiek operacje na niej konieczne jest uprzednie zalogowanie się do systemu.

MySQL wymaga w takim przypadku trzech podstawowych opcji podawanych bezpośrednio po wywołaniu programu:

  • -u nazwa_użytkownika
  • -h host
  • -p hasło

Skoro wiemy już jak połączyć się z bazą wykorzystajmy więc to:

1
2
3
4
5
6
mysqldump -udbuser -hlocalhost -pdbpass

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

Nic się nie wydarzyło. Program zwrócił uwagę, że potrzebuje kolejnych opcji, i podał nawet swoje propozycje… Program oczekuje:

  • database [tables] – nazwy bazy danych i ewentualnie jej tabel (tabele podajemy w przypadku jeżeli nie chcemy zrzucać całej bazy)
  • –databases [OPTIONS] DB1 [DB2 DB3...] – nazwy wielu baz danych
  • –all-databases [OPTIONS] (w skrócie -A) ten przypadek zrzuca wszystkie bazy danych z serwera z wyjątkiem bazy odpowiedzialnej za przechowywanie informacji o samym serwerze i uprawnieniach dostępu do niego.

W praktyce najczęściej będzie nas interesowało pierwsze z proponowanych przez program rozwiązań.  Podajemy nazwę interesującej nas bazy:

1
mysqldump -udbuser -hlocalhost -pdbpass mybase

W tym momencie na ekran  (standardowe wyjście) zostaną zrzucone informacje z bazy o nazwie mybase, zarówno jej struktura jak i przechowywane informacje. Oczywiście wyświetlenie bazy na ekranie jest mało użytecznym rozwiązaniem…

O wiele lepszy będzie zrzut bazy do plików przy wykorzystaniu unixowego znaku standardowego przekierowania wyjścia  >

Zrzut bazy do pliku sql

1
mysqldump -uusername -hhost -ppassword  database > database.sql

Zrzut bazy do pliku xml

1
mysqldump --xml uusername -hhost -ppassword  database > database.xml

Czasem bywa tak, że nie interesuje nas cała baza  a jedynie jej część można wówczas po nazwie bazy podać nazwy tabel

1
mysqldump -uusername -hhost -ppassword  database table1 table2 table3 > database.sql

Co jednak jeżeli mamy w bazie kilkadziesiąt tabel a chcemy pominąć jedną lub dwie z nich? Zamiast wymieniać wszystkie z interesujących nas tabel możemy wymienić te, którye nas nie interesują. Opcja –ignore-table=db_name.tbl_name okaże się tu bardzo pomocna. Należy pamiętać że używając tej opcji konieczne jest podanie nazwy bazy przed nazwą ignorowanej tabeli rozdzielonych kropką

1
mysqldump -uusername -hhost -ppassword  database  -ignore-table database.table > database.sql

Tagi: , , ,

Dodaj odpowiedź