Przenoszenie bazy danych MySQL, np na pendrive

Podczas stawiania serwera www na malince z obsługą bazy danych chciałem, aby baza danych znajdowała się na pendrive. Głównie z tego względu, aby mieć możliwość szybkiego przeniesienia jej w przypadku uszkodzenia systemu, oraz aby mieć większą przestrzeń dyskową na te dane.

Aby tego dokonać, pendrive musi być sformatowany do systemu plików linux’owych. W moim przypadku sformatowałem do formatu ext4. Możemy wykonać to poprzez raspberrypi wykonując następujące polecenie

Można również sformatować poprzez terminal. W pierwszej kolejności sprawdzamy jaką ścieżkę ma nasz podłączony pendrive, poprzez komendę

sudo fdisk -l. 

Odczytujemy ścieżkę i wykonujemy format do ext4, poprzez komendę

sudo mkfs.ext4 /dev/sda1  

(Możemy również tak sformatować do innego typu danych zmieniając ext4, na np. fat32). Pamiętajmy jednak żeby przed format odmontować ze systemu naszą pnedrive (dokonujemy to poleceniem

sudo umount /dev/sda1) 

bądź wykorzystać tryb okienkowy malinki i aplikację Gparted

Gdy już mamy sformatowany nasz dysk USB, konfigurujemy automatyczne montowanie tego dysku pod wskazaną lokalizacje. Zostało to opisane w jednym z moich wpisów – znajdziesz go, klikając tutaj.

Następnie sprawdzamy gdzie znajduje się nasza baza danych. Dokonujemy tego będąc zalogowanym do bazy danych jako root, a następnie wykonać polecenie odczytujące lokalizację bazy danych

sudo mysql --user=root
"SELECT @@datadir;"

Albo wpisujemy kombinację polecenia, która spowoduje zalogowanie się do bazy MYSQL, oraz jej odpytanie

mysql -u danielo -p -e "SELECT @@datadir;"

Gdy już wiemy gdzie znajduje się nasza baza danych (u mnie znajduje się pod lokalizacją /var/lib/mysql/), zatrzymujemy pracę naszej bazy danych, a następnie kopiujemy bazę do nowej lokalizacji

systemctl stop mariadb
systemctl is-active mariadb
--lub--
service mysql stop
service mysql status

is-active, oraz status sprawdza status naszej bazy – czy jest ona zatrzymana, czy pracuje

Następnie tworzymy katalog na pendrive do którego przeniesiemy naszą obecną bazę danych. Kopiujemy bazę danych do nowej lokalizacji, oraz zmieniamy uprawnienia plików dla mysql:

sudo mkdir /media/nowa_bd
sudo cp -R -p /var/lib/mysql/* /media/nowa_bd
sudo chown -R mysql:mysql /media/nowa_bd

Gdy już mamy skopiowane pliki, musimy jeszcze ustawić nową ścieżkę naszej bazy danych w plikach konfiguracyjnych. Otwieramy zatem plik konfiguracyjny bazy mysql

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

I szukamy gdzie znajduje się stara lokalizacja bazy i zmieniamy ją na nową

[mysqld]:
datadir= /media/nowa_bd

Tu mamy również informację pod jakim portem jest odczytywana nasza baza danych – może się to nam w przyszłości przydać.

Następnie resetujemy i uruchamiamy usługę mysql

systemctl start mariadbs
ystemctl is-active mariadb 
--lub--
service mysql start
service mysql status

Jak to się nie uda to resetujemy malinke

Po uruchomieniu możemy sprawdzić czy faktycznie dane są zapisywane w nowej lokalizacji

mysql -u danielo -p -e "SELECT @@datadir;"

Aby sprawdzić czy wszystko jest poprawnie ustawione, do testów utworzymy nową bazę danych

# mysql -u danielo -p -e "CREATE DATABASE nowa_test;"

Teraz sprawdzimy czy została ona utworzona w nowej lokalizacji:

cd nowa_lokalizacja
ls -l | grep nowa_test

Komenda ta wypisze wszystkie pliki które mają w nazwie nowa_test

Jeżeli plik jest o hurrra udało nam się.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *