Mover um único banco de dados MySql para um disco físico separado

4

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

    
por SEarle1986 19.12.2017 / 00:48

2 respostas

3

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,
    
por SEarle1986 22.12.2017 / 00:13
0

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.
    
por Amit Vujic 25.12.2017 / 14:19