Jinsi ya Kubadilisha Saraka ya Data ya MySQL/MariaDB kwenye Linux


Baada ya kusakinisha vijenzi vya fungu la LAMP kwenye seva ya CentOS/RHEL 7, kuna mambo kadhaa unayoweza kutaka kufanya.

Baadhi yao yanahusiana na kuongeza usalama wa Apache na MySQL/MariaDB, wakati zingine zinaweza kutumika au la kulingana na usanidi au mahitaji yetu.

Kwa mfano, kulingana na matumizi yanayotarajiwa ya seva ya hifadhidata, tunaweza kutaka kubadilisha saraka ya data chaguo-msingi (/var/lib/mysql) hadi mahali tofauti. Hii ndio kesi wakati saraka kama hiyo inatarajiwa kukua kwa sababu ya matumizi ya juu.

Vinginevyo, mfumo wa faili ambapo /var umehifadhiwa unaweza kuanguka wakati mmoja na kusababisha mfumo mzima kushindwa. Hali nyingine ambapo kubadilisha saraka chaguo-msingi ni wakati tuna ushiriki wa mtandao uliojitolea ambao tunataka kutumia kuhifadhi data yetu halisi.

Kwa sababu hii, katika makala hii, tutaelezea jinsi ya kubadilisha saraka ya data ya MySQL/MariaDB kwa njia tofauti kwenye seva ya CentOS/RHEL 7 na usambazaji wa Ubuntu/Debian.

Ingawa tutatumia MariaDB, dhana zilizofafanuliwa na hatua zilizochukuliwa katika makala haya zinatumika kwa MySQL na kwa MariaDB isipokuwa ikiwa imeonyeshwa vinginevyo.

Kubadilisha Saraka ya Data ya MySQL/MariaDB chaguomsingi

Kumbuka: Tutachukulia kuwa saraka yetu mpya ya data ni /mnt/mysql-data. Ni muhimu kutambua kwamba saraka hii inapaswa kumilikiwa na mysql:mysql.

# mkdir /mnt/mysql-data
# chown -R mysql:mysql /mnt/mysql-data

Kwa manufaa yako, tumegawa mchakato katika hatua 5 rahisi kufuata:

Kuanza, inastahili na vizuri kutambua saraka ya sasa ya data kwa kutumia amri ifuatayo. Usifikirie tu kuwa bado ni /var/lib/mysql kwani inaweza kuwa imebadilishwa hapo awali.

# mysql -u root -p -e "SELECT @@datadir;"

Baada ya kuingiza nenosiri la MySQL, matokeo yanapaswa kuwa sawa na.

Ili kuepuka uharibifu wa data, sitisha huduma ikiwa inaendeshwa kwa sasa kabla ya kuendelea. Tumia amri zinazojulikana za systemd kufanya hivyo:

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

Ikiwa huduma imeshushwa, matokeo ya amri ya mwisho inapaswa kuwa kama ifuatavyo:

Kisha nakili kwa kujirudia maudhui ya /var/lib/mysql hadi /mnt/mysql-data kuhifadhi ruhusa asili na mihuri ya muda:

# cp -R -p /var/lib/mysql/* /mnt/mysql-data

Hariri faili ya usanidi (my.cnf) ili kuonyesha saraka mpya ya data (/mnt/mysql-data katika hali hii).

# vi /etc/my.cnf
OR
# vi /etc/mysql/my.cnf

Tafuta sehemu za [mysqld] na [mteja] na ufanye mabadiliko yafuatayo:

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

Hifadhi mabadiliko na kisha uendelee na hatua inayofuata.

Hatua hii inatumika tu kwa RHEL/CentOS na viasili vyake.

Ongeza muktadha wa usalama wa SELinux kwenye /mnt/mysql-data kabla ya kuwasha upya MariaDB.

# semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
# restorecon -R /mnt/mysql-data

Ifuatayo, anzisha tena huduma ya MySQL.

------------- On SystemD ------------- 
# systemctl stop mariadb
# systemctl is-active mariadb

------------- On SysVInit ------------- 
# service mysqld stop
# service mysqld status

OR

# service mysql stop
# service mysql status

Sasa, tumia amri sawa na katika Hatua ya 1 ili kuthibitisha eneo la saraka mpya ya data:

# mysql -u root -p -e "SELECT @@datadir;"

Ingia kwa MariaDB, unda hifadhidata mpya kisha uangalie /mnt/mysql-data:

# mysql -u root -p -e "CREATE DATABASE tecmint;"

Hongera! Umefaulu kubadilisha saraka ya data ya MySQL au MariaDB.

Katika chapisho hili, tumejadili jinsi ya kubadilisha saraka ya data katika seva ya MySQL au MariaDB inayoendesha kwenye CentOS/RHEL 7 na usambazaji wa Ubuntu/Debian.

Je, una maswali au maoni yoyote kuhusu makala hii? Jisikie huru kutufahamisha kwa kutumia fomu iliyo hapa chini - tunafurahi kusikia kutoka kwako kila wakati!