web-dev-qa-db-fra.com

Déplacement d'une base de données MySql sur un disque physique séparé

J'essaie de déplacer une base de données MySQL unique sur un autre disque physique de ma machine Ubuntu. J'utilise Ubuntu 17.04.

le lecteur externe est monté dans/etc/fstab comme suit (dernière ligne):

#zoneminder external drive
/path/to/new/location/zoneminder/images /var/cache/zoneminder/images none defaults,bind  0 2
/path/to/new/location/zoneminder/events /var/cache/zoneminder/events none defaults,bind 0
/dev/disk/by-uuid/a98ab607-15eb-4089-9197-7d26c3576cf9 /path/to/new/location ext4 x-gvfs-show 0 0

J'ai essayé les étapes suivantes:

arrêtez le service mysql:

Sudo service mysql stop

Changez le propriétaire du lecteur monté (je dois mettre à jour l'entrée fstab pour l'intégrer, mais un problème à la fois!):

chown mysql:mysql /path/to/new/location

déplacer dans le dossier mysql

cd /var/lib/mysql

copier la base de données (appelée zm) vers le nouvel emplacement

Sudo rsync -av zm /path/to/new/location/zm

renommer l'ancienne base de données

Sudo mv zm zm.old

créer un lien symbolique vers la base de données rsynced

Sudo ln -s /path/to/new/location/zm

déplacer vers le nouvel emplacement de la base de données

cd /path/to/new/location

faire tout ce que je fais me montre que mysql est le propriétaire de/path/to/new/location/zm

définir les autorisations de fichiers

Sudo chmod 700 zm
cd zm
Sudo chmod 660 *

ajouter le nouvel emplacement à apparmor

Sudo nano /etc/apparmor.d/usr.sbin.mysqld

ajouter

/path/to/new/location/ r,
/path/to/new/location/** rwk,

(re) démarrer les services

Sudo service apparmor restart
Sudo service mysql start

Connectez-vous à mysql:

mysql -u root -p

ouvrir la nouvelle base de données

use zm;

montrer les tables

show tables;

et ici je reçois une erreur:

ERROR 1018 (HY000): Can't read dir of './zm/' (errno: 13 - Permission denied)

J'ai aussi essayé chmod 777 et chmod 777 * dans /path/to/new/location sans succès

5
SEarle1986

corrigé!

Le problème était l'entrée apparmor:

/path/to/new/location/ r,
/path/to/new/location/** rwk,

devait en fait être un répertoire par rapport à ce qu'il était:

/path/to/new/ r,
/path/to/new/** rwk,

EDIT Ubuntu 18.04 m'a demandé de changer le propriétaire du lien symbolique vers mysql:

(dans/var/lib/mysql :)

chown -h mysql:mysql zm
3
SEarle1986

Vous pouvez essayer cette variante:

1) first check in my.cnf [/etc/mysql/my.cnf] for database files destination.

2) let say that destination is in folder /var/lib/mysql/ and yours database name is "abccompany"

3) stop mysql database

4) move folder [var/lib/mysql/abccompany] to new destination (let say "/diskY")

5) make symbolic link:
     ln  -s  /diskY/abccompany   abccompany

6) start mysql database and everything should work just fine.
0
Amit Vujic