Problema MyISAM depois de mover o datadir de um banco de dados MySQL

1

Recentemente, movi meu diretório de dados do banco de dados MySQL da localização padrão /var/lib/mysql para um novo disco rígido localizado em /media/..UID../mysql , seguindo as etapas que você pode encontrar em várias postagens.

  1. pare o MySQL
  2. Copie a pasta antiga para o novo local
  3. Altere o datadir no [mysqld] de /etc/mysql/my.cnf
  4. Altere as duas entradas na configuração do AppArmor
  5. Ajuste os direitos do usuário a partir do diretório de dados
  6. Reiniciar o AppArmor
  7. Reinicie o MySql

Após esses passos eu tentei criar um novo banco de dados e funcionou, ele aparece também na nova pasta. Então eu criei uma nova tabela InnoDB e ela também funcionou e colocou o arquivo *frm na pasta /mysql/new . Mas então eu queria criar uma tabela MyISAM neste banco de dados, recebi o erro

#1 - Can't create/write to file '/media/..UID../mysql/new/tableName.MYI' (Errcode: 13)

Eu já tentei definir todas as permissões para o 777, pois achei que fosse um problema de permissão (mas como o InnoDB pode gravar nessa pasta, não consigo ver porque o MyISAM não pode !?). Para mim, parece que o mecanismo MyISAM precisa de outra permissão especial para gravar seus arquivos, mas não sei onde.

Primeiro eu pensei que é um problema de montagem do novo disco rígido, mas novamente - o InnoDB pode criar pastas de banco de dados e também criar arquivos dentro dessas pastas.

Assim, qualquer ajuda é apreciada, se alguém tiver um problema semelhante depois de mover uma tabela MyISAM e puder dar algumas dicas de onde procurar ou o que mais tentar.

Muito obrigado já antecipadamente!

    
por Daniel Fischer 24.04.2013 / 09:16

1 resposta

1

Eu tive um problema semelhante.

Veja o que funcionou no Ubuntu 12.04

Para mover arquivos de dados de /var/lib/mysql para /newdir_path/newdir

sudo mysql stop
sudo rsync -av /var/lib/mysql /newdir_path/newdir ## like copy, but keeps rights
sudo -H gedit /etc/mysql/my.cnf

altere datadir para /newdir_path/newdir

sudo -H gedit /etc/apparmor.d/usr.sbin.mysqld

em vez de:

/var/lib/mysql/ r,
/var/lib/mysql/** /rwk 

digite:

/newdir_path/newdir/ r,
/newdir_path/newdir/** rwk, 

Agora execute:

sudo /etc/init.d/apparmor restart 
sudo chown mysql:mysql <b>/newdir_path
sudo start mysql
    
por kshishkin 18.09.2013 / 02:13