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ę.