Corrigido!
O problema foi a entrada do apparmor:
/path/to/new/location/ r,
/path/to/new/location/** rwk,
realmente precisava ser um diretório acima do que era:
/path/to/new/ r,
/path/to/new/** rwk,
Estou tentando mover um único banco de dados MySql para outro disco físico na minha máquina Ubuntu. Estou usando o Ubuntu 17.04.
o drive externo é montado em / etc / fstab como segue (última linha):
#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
Eu tentei os seguintes passos:
pára o serviço mysql:
sudo service mysql stop
Altere o proprietário da unidade montada (preciso atualizar a entrada fstab para incorporar isso, mas um problema por vez!):
chown mysql:mysql /path/to/new/location
mova para a pasta mysql
cd /var/lib/mysql
copie o banco de dados (chamado zm) para o novo local
sudo rsync -av zm /path/to/new/location/zm
renomear banco de dados antigo
sudo mv zm zm.old
crie um link simbólico para o banco de dados que nós rsynced
sudo ln -s /path/to/new/location/zm
mova para o novo local do banco de dados
cd /path/to/new/location
fazer um ll neste momento mostra-me que o mysql é o proprietário de / path / to / new / location / zm
definir permissões de arquivo
sudo chmod 700 zm
cd zm
sudo chmod 660 *
adicione o novo local ao apparmor
sudo nano /etc/apparmor.d/usr.sbin.mysqld
adicione
/path/to/new/location/ r,
/path/to/new/location/** rwk,
serviços (re) start
sudo service apparmor restart
sudo service mysql start
Faça o login no mysql:
mysql -u root -p
abra o novo banco de dados
use zm;
mostra tabelas
show tables;
e aqui eu recebo um erro:
ERROR 1018 (HY000): Can't read dir of './zm/' (errno: 13 - Permission denied)
Eu também tentei chmod 777
e chmod 777 *
em /path/to/new/location
sem sucesso
Corrigido!
O problema foi a entrada do apparmor:
/path/to/new/location/ r,
/path/to/new/location/** rwk,
realmente precisava ser um diretório acima do que era:
/path/to/new/ r,
/path/to/new/** rwk,
Você pode tentar essa variação:
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.