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.
Algunas de ellas tienen que ver con aumentar la seguridad de Apache y MySQL/MariaDB, mientras que otras pueden ser aplicables o no según nuestra configuración o necesidades.
Por ejemplo, según el uso esperado del servidor de base de datos, es posible que deseemos cambiar el directorio datos predeterminado (/var/lib/mysql
) a una ubicación diferente. Este es el caso cuando se espera que dicho directorio crezca debido al elevado uso.
De lo contrario, el sistema de archivos donde está almacenado /var
puede colapsar en un momento y provocar 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 predeterminado de MySQL/MariaDB a una ruta diferente en un servidor CentOS/RHEL 7 y distribuciones Ubuntu/Debian.
Aunque usaremos MariaDB, los conceptos explicados y los pasos seguidos en este artículo se aplican tanto a MySQL como a MariaDB a menos que se indique lo contrario.
Cambiar el directorio de datos predeterminado de MySQL/MariaDB
Nota: Supondremos 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 tu 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 simplemente que sigue siendo /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 debería ser similar a.
Paso 2: copie el directorio de datos MySQL a una nueva ubicación
Para evitar la corrupción de datos, detenga el servicio si se está ejecutando actualmente antes de continuar. Utilice los conocidos comandos systemd 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 ha sido desactivado, 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 y marcas de tiempo originales:
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 las secciones [mysqld]
y [client]
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: Establecer el contexto de seguridad de SELinux en el directorio de datos
Este paso solo es aplicable 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
Luego 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, use 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.
¿Tiene alguna pregunta o comentario sobre este artículo? No dude en hacérnoslo saber mediante el siguiente formulario: ¡siempre estaremos encantados de saber de usted!