Współczesne strony internetowe najczęściej składają się z czegoś więcej niż tylko statycznych plików HTML. Blogi, strony oparte o system Joomla! i inne systemy CMS to aplikacje korzystające z PHP oraz bazy danych MySQL do przechowywania tekstów i wszystkich ustawień. Administrator strony, chcąc zrobić kopię zapasową, będzie musiał zgrać zarówno pliki PHP, jak i bazę danych. Ponieważ jest to żmudne zajęcie i większość z nas tego nie lubi, warto ułatwić sobie życie i zautomatyzować cały proces.
Kopię zapasową bazy MySQL tworzy się za pomocą programu mysqldump z poziomu PHP za pomocą instrukcji system().
Należy wykonać następujące instrukcje, aby zrzucić bazę do pliku tekstowego (który w razie problemów można szybko zaimportować do bazy danych):
$sqld = "mysqldump --user=nazwa_uzytkownika --password=hasło --host=nazwa_hosta nazwa_bazy_danych > plik.sql";
system($sqld);
Warto przystosować kod w taki sposób, by nazwa pliku odpowiadała dacie jego utworzenia. Służy do tego funkcja date():
$data = date("Y-m-d"); // zwraca datę, np. 2010-05-28
$sqld = "mysqldump --user=nazwa_uzytkownika --password=hasło --host=nazwa_hosta nazwa_bazy_danych > backup_$data.sql";
system($sqld);
Tak napisany skrypt można wykonywać samodzielnie i następnie pobierać tylko przez FTP zrzut bazy, albo można zaplanować go jako comiesięczne czy cotygodniowe zadanie dla cron’a. Warto wtedy zastosować jakąś metodę przypominania o tym, że czeka na nas gotowy plik, np. przesyłanie linku mailem.
