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 o aumento da 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 os dados padrão diretório (
/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
é armazenado pode entrar em colapso em um ponto, fazendo com que todo o sistema falhe. Outro cenário em que alterar o 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 em distribuições Ubuntu/Debian.
Embora usaremos MariaDB , os conceitos explicados e as etapas realizadas neste artigo se aplicam tanto ao MySQL e para MariaDB salvo indicação em contrário.
Alterando o diretório de dados MySQL/MariaDB padrão
Observação :Vamos assumir que nosso novo diretório de dados é
/mnt/mysql-data
. É importante notar que este diretório deve ser de propriedade de 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 assuma que ainda é
/var/lib/mysql
uma vez que poderia ter sido alterado no passado. # mysql -u root -p -e "SELECT @@datadir;"
Depois de inserir a senha do MySQL, a saída deve ser semelhante a.
Etapa 2:copie o diretório de dados do MySQL para um novo local
Para evitar corrupção de dados, interrompa o serviço se estiver em execução antes de continuar. Use o systemd comandos bem conhecidos 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 deve ser a seguinte:
Em seguida, copie recursivamente o conteúdo de
/var/lib/mysql
para /mnt/mysql-data
preservando 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
nesse caso). # vi /etc/my.cnf OR # vi /etc/mysql/my.cnf
Localize o
[mysqld]
e [client]
seções 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 com 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:criar 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 para 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 - estamos sempre felizes em ouvir de você!