mysqldump - kopia zapasowa bazy danych

mysqldump to narzędzie robienia kopii bazy danych MySQL. Tworzy plik .sql zawierający takie komendy jak: DROP table, CREATE table i INSERT into źródłowej bazy danych. W celu odzyskania bazy wystarczy wykonać plik sql w docelowej bazie danych. Poniżej przedstawiam składnię poleceń do robienia kopii i przywracania bazy.

kopia: mysqldump -u user -p[haslo] [nazwa_bazy] > plik.sql
odzyskiwanie: mysql -u user -p[haslo] [nazwa_bazy] < plik.sql

Backup bazy MySQL

Pokażę teraz kilka praktycznych przykładów użycia mysqldump. Poniższa komenda wykonuje kopię bazy testowa do pliku kopia_bazy.sql.
mysqldump -u user -phaslo testowa > kopia_bazy.sql
Jeśli chcemy zrobić backup kilku baz danych możemy użyć poniższego polecenia. Wykonuje ono kopię dwóch baz (baza1, baza2) do pliku kopia_baz.sql.
mysqldump -u user -phaslo --databases baza1 baza2 > kopia_baz.sql
Poniższa komenda robi kopię wszystkich baz.
mysqldump -u user -phaslo --all-databases > kopia_wszystkich_baz.sql
Jeśli chcemy zrobić kopię tylko określonej tabeli w bazie należy wymienić jej nazwę po nazwie bazy danych.
mysqldump -u user -phaslo nazwa_bazy nazwa_tabeli > kopia_tabeli.sql

Przywracanie bazy MySQL

Poniżej przedstawiam procedurę przywracania bazy danych. Najpierw logujemy się do mysql. Kolejna komenda powoduje przywrócenie bazy danych testowa z pliku backup.sql.
mysql -u root -phaslo
mysql -u root -phaslo testowa < /katalog/backup.sql
Poniżej przedstawiam komendę, która wykona lokalnie kopię bazy danych test i przywróci ją na zdalnym serwerze jako test1. Należy pamiętać aby przed wykonaniem polecenia utworzyć na zdalnym serwerze bazę test1.
[localhost] mysqldump -u root -phaslo test | mysql \
-u root -phaslo --host=zdalny_serwer -C test1
Można również napisać prosty skrypt robiący kopię w bashu. Potem możemy taki skrypt uruchamiać o określonych porach z crona.
#!/bin/bash
datautw=`date +"%Y-%m-%d"`
user='user'
password='haslo'
host=''
mysqldump -u $user -p$password -h $host nazwa_bazy > kopia_bazy$datautw.sql