[Tutorial] Mover o mysql de uma pasta para outra no Ubuntu Server 18.04

Tutorias diversos sobre serviços e aplicações em servidores Linux
Avatar do usuário
tacioandrade
Administrator
Administrator
Mensagens: 110
Registrado em: 10 Jun 2013 22:03
Localização: Vitória da Conquista - Ba
Idade: 34
Contato:
Status: Offline

[Tutorial] Mover o mysql de uma pasta para outra no Ubuntu Server 18.04

Mensagem por tacioandrade »

Boa tarde amigos, hoje passei por um perrengue pela manhã, um profissional criou um servidor em um cliente com o / com 50GB e /dados (partição onde fica a aplicação) com o resto dos 4TB do volume RAID10, porém uma coisa que o mesmo não pensou é que o banco de dados cresce e foi o que ocorreu.
Nesse cliente o / ficou com 100% do espaço ocupado e o servidor parou por falta de um dimensionamento correto. Como não podia mexer no particionamento do servidor pois não possuía tempo para executar o backup/restore dos mais de 3TB de informações do servidor, tive que mover o mysql do /var/lib/mysql para o /dados/mysql
Já havia feito esse procedimento no CentOS 6 a algum tempo e o processo é simples:
# cp -p -R /var/lib/mysql /dados/mysql
Depois disso editava o arquivo mysql.cfg e pronto, problema resolvido, o problema é que no Ubuntu Server existe o serviço AppArmor e mesmo com o mesmo DESABILITADO, quando fazia o mesmo processo, ele dava erro no início do serviço do mysql e não mostrava nada no log.
Após 3 horas perdidas descobri o passo a passo que vou dar aqui:

1 - Migração dos dados para o novo diretório:

Código: Selecionar todos

# cp -p -R /var/lib/mysql /dados/bancos/mysql
2 - Editar o arquivo do AppArmor pra avisar que o mysql vai estar em outro diretório:

Código: Selecionar todos

# nano /etc/apparmor.d/local/usr.sbin.mysqld
Com o seguinte conteúdo: 

Código: Selecionar todos

/dados/bancos/ r,
/dados/bancos/** rwk,

3 - Por fim, dar um reload no serviço do AppArmor
# service apparmor reload

4 - Editar o arquivo do mysql para informar onde fica o novo banco:

Código: Selecionar todos

# nano /etc/mysql/mysql.conf.d/mysqld.cnf
Alterando a linha abaixo:

Código: Selecionar todos

datadir                = /var/lib/mysql 
para
datadir         = /dados/bancos/mysql/
5 - Em alguns casos ouvir ser necessário dar a permissão 777 para a pasta anterior a do mysql (porém só recomendo fazer isso caso o serviço não suba de outra forma).
# chmod 777 /dados/bancos

6 - Por fim dar um start no Mysql

Código: Selecionar todos

# sudo /etc/init.d/mysql start
Caso isso não funcione para você, rode o comando 

Código: Selecionar todos

mysqld_safe -v 
para ver para ver se consegue algum possível erro pra googlar e encontrar a solução.

Um forte abraço a todos e até o próximo.



Voltar para “Tutoriais”