+48 511 790 336

szymon@artmetic.pl

Kopia zapasowa bazy danych MySQL na Ubuntu

Aby umożliwić tworzenie kopii zapasowej bazy danych w według ustalonego przez nas harmonogramu należy stworzyć plik skrypt.sh, np. w lokalizacji /etc/kopia:

sudo mkdir /etc/kopia

Tworzymy folder o nazwie “kopia” w folderze /etc:

sudo cd /etc/kopia

Przechodzimy w drzewie katalogów do nowo utworzonego folderu i tworzymy plik:

sudo touch ./skrypt.sh

Nadajemy plikowi prawa do wykonywania oraz otwieramy plik programem do edycji plików tekstowych nano:

sudo chmod +x ./skrypt.sh
Następnie dopisujemy linijki do skryptu mające na celu utworzyć kopię tabeli z bazy  danych oraz zapisanie w wybranej przez nas lokalizacji. Należy pamiętać, aby zamienić nazwę użytkownika na nazwę zapisaną w naszym systemie. Kolejna linijka tworzy kopię zapasową folderu i plików zawartych w podkatalogu /etc/ – jest to bardzo przydatne, gdy chcemy przywrócić ustawienia, które mieliśmy wcześniej w systemie. Należy również zwrócić uwagę na lokalizację pliku zawierającą polecenie `date +%d`, które dodaje do nazwy pliku obecny dzień, którego kopia będzie wykonywana. Jeżeli chcemy utworzyć plik z inną składnią możemy użyć innych argumentów, które widać po wydaniu polecenia:
date --help

Możesz utworzyć własny styl zapisu plików/folderów, używając np. następujących opcji. Pamiętaj jednak, że tworzenie kopii z danym dniem miesiąca umożliwi Ci powrót do kopii tylko z ostatniego miesiąca, ponieważ co miesiąc będzie się nadpisywał plik z tym samym dniem tygodnia, natomiast użycie pełnej daty doprowadzić może do szybkiego zapełnienia pamięci na dysku twardym. Tak więc w zależności od potrzeb należy dostosować styl tworzenia kopii do własnych potrzeb.

date +%d
06
date +%d-%a-%B
06-nie-lipiec

Przechodzimy więc do utworzenia skryptu:

sudo nano ./skrypt.sh

#!/bin/bash
/usr/bin/mysqldump -h localhost -u root --password=MyPassword -B table_name &gt; /home/MyUSER/table_name-`date +%d`.sql</p>
tar cvf /home/MyUSER/kopie/kopia_etc_`date +%d`.tar /etc/
nano /etc/crontab

Edytujemy plik odpowiedzialny za harmonogram zadań w systemie oraz dodajemy możliwość tworzenia kopii o ustalonej godzinie w pliku /etc/crontab. Pamiętaj o podmianie nazwy użytkownika MyUser na własną:

30 5 * * * MyUSER /etc/kopie/skrypt.sh

W tym przypadku kopia będzie tworzona codziennie o 5:30, jeżeli chcielibyśmy tworzyć kopie np. co 2 dni przez użytkownika szymon o 4:25 należałoby zastosować wpis:

25 4 */2 * * szymon /etc/kopie/skrypt.sh

Zachęcam do pozostawiania komentarzy (również tych krytycznych) oraz udostępniania artykułu 🙂