sql >> Base de Datos >  >> RDS >> Mysql

Cómo cambiar un directorio de datos MySQL/MariaDB predeterminado en Linux

Después de instalar los componentes de una pila LAMP en un servidor CentOS/RHEL 7, es posible que desee hacer un par de cosas.

Algunos de ellos tienen que ver con aumentar la seguridad de Apache y MySQL/MariaDB, mientras que otros pueden ser aplicables o no según nuestra configuración o necesidades.

Por ejemplo, según el uso esperado del servidor de la base de datos, es posible que deseemos cambiar los datos predeterminados. directorio (/var/lib/mysql ) a una ubicación diferente. Este es el caso cuando se espera que dicho directorio crezca debido al alto uso.

De lo contrario, el sistema de archivos donde /var se almacena puede colapsar en un punto causando que todo el sistema falle. Otro escenario en el que cambiar el directorio predeterminado es cuando tenemos un recurso compartido de red dedicado que queremos usar para almacenar nuestros datos reales.

Por esta razón, en este artículo, explicaremos cómo cambiar el directorio de datos MySQL/MariaDB predeterminado a una ruta diferente en un servidor CentOS/RHEL 7 y distribuciones Ubuntu/Debian.

Aunque usaremos MariaDB , los conceptos explicados y los pasos realizados en este artículo se aplican tanto a MySQL y a MariaDB a menos que se indique lo contrario.

Cambiar el directorio de datos MySQL/MariaDB predeterminado

Nota :Vamos a suponer que nuestro nuevo directorio de datos es /mnt/mysql-data . Es importante tener en cuenta que este directorio debe ser propiedad de mysql:mysql .

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

Para su comodidad, hemos dividido el proceso en 5 pasos fáciles de seguir:

Paso 1:identificar el directorio de datos MySQL actual

Para comenzar, vale la pena identificar el directorio de datos actual usando el siguiente comando. No asuma que todavía es /var/lib/mysql ya que podría haber sido cambiado en el pasado.

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

Después de ingresar la contraseña de MySQL, el resultado debe ser similar a.

Paso 2:Copie el directorio de datos de MySQL a una nueva ubicación

Para evitar la corrupción de datos, detenga el servicio si se está ejecutando actualmente antes de continuar. Usa el systemd Comandos conocidos para hacerlo:

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

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

OR

# service mysql stop
# service mysql status

Si el servicio se ha caído, el resultado del último comando debería ser el siguiente:

Luego copie recursivamente el contenido de /var/lib/mysql a /mnt/mysql-data conservando los permisos originales y las marcas de tiempo:

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

Paso 3:configurar un nuevo directorio de datos MySQL

Edite el archivo de configuración (my.cnf ) para indicar el nuevo directorio de datos (/mnt/mysql-data en este caso).

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

Localice el [mysqld] y [client] secciones y realice los siguientes cambios:

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

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

Guarde los cambios y luego continúe con el siguiente paso.

Paso 4:Establezca el contexto de seguridad de SELinux en el directorio de datos

Este paso solo se aplica a RHEL/CentOS y sus derivados.

Agregue el contexto de seguridad de SELinux a /mnt/mysql-data antes de reiniciar MariaDB.

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

A continuación, reinicie el servicio 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

Ahora, usa el mismo comando que en el Paso 1 para verificar la ubicación del nuevo directorio de datos:

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

Paso 5:Cree una base de datos MySQL para confirmar el directorio de datos

Inicie sesión en MariaDB, cree una nueva base de datos y luego verifique /mnt/mysql-data :

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

¡Felicidades! Ha cambiado con éxito el directorio de datos para MySQL o MariaDB.

Resumen

En esta publicación, hemos discutido cómo cambiar el directorio de datos en un servidor MySQL o MariaDB que se ejecuta en distribuciones CentOS/RHEL 7 y Ubuntu/Debian.

¿Tienes alguna pregunta o comentario sobre este artículo? No dude en hacérnoslo saber mediante el siguiente formulario. ¡Siempre nos complace saber de usted!