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