Spostare la cartella dei DB di MySQL
Updated at: 12/11/2018


Per spostare la cartella con i dati dei DB in un'altra partizione, su CentOS, seguire i seguenti passi

verficare l'attuale pecorso:

select @@datadir;

fermare il servizio, copiare i file nella nuova destinazione e rimuovere (facendone una copia) quelli vecchi

systemctl stop mysqld.service
rsync -av /var/lib/mysql /db_data
mv /var/lib/mysql /var/lib/mysql.bak

modificare il file "/etc/my.cnf" in modo che punti al nuovo percorso e aggiungere la parte sul client:

[mysqld]
...

datadir=/db_data/mysql
socket=/db_data/mysql/mysql.sock

...

[client]
port=3306
socket=/db_data/mysql/mysql.sock

Quindi riavviamo il servizio

systemctl start mysqld.service


reference: https://www.digitalocean.com/community/tutorials/how-to-change-a-mysql-data-directory-to-a-new-location-on-centos-7

Attenzione

Se sul server è attivo SELinux, otterremo degli errori perché i permessi sui nuovi file sono errati.

In tal caso possiamo

  1. spegnere SELinux:
    "setenforce 0"
  2. sistemare i permessi nel modo opportuno

Per il punto 2 servono i seguenti pacchetti:

yum install policycoreutils policycoreutils-python selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans

Quindi impostiamo i permessi:

semanage fcontext -a -t mysqld_db_t "/db_data/mysql(/.*)?"
restorecon -Rv /db_data/mysql/

systemctl restart mysqld.service