Я пытаюсь переместить единственную базу данных MySql в другой физический диск в моей машине Ubuntu. Я использую Ubuntu 17.04.
внешний диск смонтирован в/etc/fstab следующим образом (последняя строка):
#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
Я попробовал следующие шаги:
остановка mysql сервис:
sudo service mysql stop
Измените владельца подсоединенного внешнего диска (я должен обновить fstab запись для слияния этого, но одной проблемы за один раз!):
chown mysql:mysql /path/to/new/location
переместитесь в mysql папку
cd /var/lib/mysql
база данных копии (названный zm) к новому местоположению
sudo rsync -av zm /path/to/new/location/zm
переименуйте старую базу данных
sudo mv zm zm.old
создайте символьную ссылку на базу данных мы rsynced
sudo ln -s /path/to/new/location/zm
переместитесь в новое местоположение базы данных
cd /path/to/new/location
выполнение ll в этой точке показывает мне, что mysql является владельцем/path/to/new/location/zm
полномочия файла набора
sudo chmod 700 zm
cd zm
sudo chmod 660 *
добавьте новое местоположение к apparmor
sudo nano /etc/apparmor.d/usr.sbin.mysqld
добавить
/path/to/new/location/ r,
/path/to/new/location/** rwk,
(ре) запускает сервисы
sudo service apparmor restart
sudo service mysql start
Войдите в mysql:
mysql -u root -p
откройте новую базу данных
use zm;
покажите таблицы
show tables;
и здесь я получаю ошибку:
ERROR 1018 (HY000): Can't read dir of './zm/' (errno: 13 - Permission denied)
Я также попробовал chmod 777
и chmod 777 *
в /path/to/new/location
без успеха
Зафиксированный это!
Проблемой была apparmor запись:
/path/to/new/location/ r,
/path/to/new/location/** rwk,
на самом деле должен был быть один каталог от того, каково это было:
/path/to/new/ r,
/path/to/new/** rwk,
ОТРЕДАКТИРУЙТЕ Ubuntu 18.04, потребовал, чтобы я изменил владельца символьной ссылки на mysql:
(в/var/lib/mysql:)
chown -h mysql:mysql zm
Можно попробовать это изменение:
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.