Pesquisa de site

Como alterar um diretório de dados MySQL/MariaDB padrão no Linux


Depois de instalar os componentes de uma pilha LAMP em um servidor CentOS/RHEL 7, há algumas coisas que você pode querer fazer.

Alguns deles têm a ver com aumentar a segurança do Apache e MySQL/MariaDB, enquanto outros podem ser aplicáveis ou não de acordo com nossa configuração ou necessidades.

Por exemplo, com base no uso esperado do servidor de banco de dados, podemos querer alterar o diretório data padrão (/var/lib/mysql) para um local diferente. Este é o caso quando se espera que tal diretório cresça devido ao alto uso.

Caso contrário, o sistema de arquivos onde /var está armazenado poderá entrar em colapso em um ponto, causando falha em todo o sistema. Outro cenário em que a alteração do diretório padrão é quando temos um compartilhamento de rede dedicado que queremos usar para armazenar nossos dados reais.

Por esse motivo, neste artigo explicaremos como alterar o diretório de dados padrão do MySQL/MariaDB para um caminho diferente em um servidor CentOS/RHEL 7 e distribuições Ubuntu/Debian.

Embora usaremos o MariaDB, os conceitos explicados e as etapas executadas neste artigo se aplicam tanto ao MySQL quanto ao MariaDB salvo indicação em contrário.

Alterando o diretório de dados MySQL/MariaDB padrão

Nota: Vamos assumir que nosso novo diretório de dados é /mnt/mysql-data. É importante notar que este diretório deve pertencer a mysql:mysql.

mkdir /mnt/mysql-data
chown -R mysql:mysql /mnt/mysql-data

Para sua conveniência, dividimos o processo em 5 etapas fáceis de seguir:

Etapa 1: identificar o diretório de dados MySQL atual

Para começar, vale a pena identificar o diretório de dados atual usando o seguinte comando. Não presuma que ainda é /var/lib/mysql, pois poderia ter sido alterado no passado.

mysql -u root -p -e "SELECT @@datadir;"

Depois de inserir a senha do MySQL, a saída deverá ser semelhante a.

Etapa 2: Copie o diretório de dados MySQL para um novo local

Para evitar corrupção de dados, interrompa o serviço se ele estiver em execução antes de continuar. Use os comandos conhecidos do systemd para fazer isso:

------------- On SystemD ------------- 
systemctl stop mariadb
systemctl is-active mariadb

------------- On SysVInit ------------- 
service mysqld stop
service mysqld status

OR

service mysql stop
service mysql status

Se o serviço foi desativado, a saída do último comando deverá ser a seguinte:

Em seguida, copie recursivamente o conteúdo de /var/lib/mysql para /mnt/mysql-data preservando as permissões e carimbos de data/hora originais:

cp -R -p /var/lib/mysql/* /mnt/mysql-data

Etapa 3: configurar um novo diretório de dados MySQL

Edite o arquivo de configuração (my.cnf) para indicar o novo diretório de dados (/mnt/mysql-data neste caso).

vi /etc/my.cnf
OR
vi /etc/mysql/my.cnf

Localize as seções [mysqld] e [client] e faça as seguintes alterações:

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

Salve as alterações e prossiga para a próxima etapa.

Etapa 4: definir o contexto de segurança do SELinux para o diretório de dados

Esta etapa é aplicável apenas ao RHEL/CentOS e seus derivados.

Adicione o contexto de segurança do SELinux a /mnt/mysql-data antes de reiniciar o MariaDB.

semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
restorecon -R /mnt/mysql-data

Em seguida, reinicie o serviço MySQL.

------------- On SystemD ------------- 
systemctl stop mariadb
systemctl is-active mariadb

------------- On SysVInit ------------- 
service mysqld stop
service mysqld status

OR

service mysql stop
service mysql status

Agora, use o mesmo comando da Etapa 1 para verificar a localização do novo diretório de dados:

mysql -u root -p -e "SELECT @@datadir;"

Etapa 5: Crie um banco de dados MySQL para confirmar o diretório de dados

Faça login no MariaDB, crie um novo banco de dados e verifique /mnt/mysql-data:

mysql -u root -p -e "CREATE DATABASE tecmint;"

Parabéns! Você alterou com sucesso o diretório de dados do MySQL ou MariaDB.

Resumo

Neste post, discutimos como alterar o diretório de dados em um servidor MySQL ou MariaDB rodando em distribuições CentOS/RHEL 7 e Ubuntu/Debian.

Você tem alguma dúvida ou comentário sobre este artigo? Sinta-se à vontade para nos informar usando o formulário abaixo – ficaremos sempre felizes em ouvir você!