IBM Cloud Docs
Cambio del directorio de datos de MySQL en un entorno UNIX o similar

Cambio del directorio de datos de MySQL en un entorno UNIX o similar

Siga estos pasos para cambiar el directorio de datos de MySQL:

  1. Inicie sesión en el servidor usando PuTTY o tu cliente preferido.

    Si utiliza una partición dedicada para el directorio de datos, asegúrese de montar la nueva partición en lugar del directorio de datos original después de copiar los datos encima. Montar una nueva partición guarda cambios de configuración no estándar con los que algunas aplicaciones podrían no funcionar.

  2. Cierre mysqld (daemon de MySQL). El proceso para iniciar y detener el daemon puede diferir entre diferentes sistemas operativos y distribuciones. MySQL debe detenerse durante cualquier proceso que afecte directamente a los archivos sin formato.

    /etc/init.d/mysql stop

    O

    /etc/init.d/mysqld, /etc/init.d/mysql-server, /usr/loca/etc/init.d/mysql, /opt/lamp…

  3. Realice una copia de la base de datos antes de realizar ningún cambio. Asegúrese de que el daemon de MySQL no se esté ejecutando cuando realice copias directas de los archivos de base de datos sin formato.

Si utiliza cPanel en el servidor, detenga cPanel (TailWatch y chkservd) antes de que se reinicie el daemon. Puede crear un archivo temporal /etc/chkserv.d/mysqlisevil para evitar que chkservd reinicie el servicio. Si no está familiarizado con rsync, puede utilizar cualquier otra herramienta para crear su copia de seguridad.

rsync -vaP /var/lib/mysql/ /var/lib/mysql.'date +%s'

  1. Cree el directorio de datos y proporcione la propiedad del usuario de MySQL (o cualquier usuario que se especifique en el archivo de opción global 'my.cnf'). En este ejemplo, se utilizará la ubicación /var/lib/mysql-data, pero puede utilizar cualquier ubicación que desee. Si está añadiendo un disco o dispositivo lógico específicamente para este propósito, también deberá añadir la entrada a /etc/fstab y montar el directorio antes de continuar.

    chown mysql:mysql /var/lib/mysql-data

  2. Haga una copia final del directorio original al nuevo MySQL directorio de datos (asegúrese de mantener el directorio / al final del primer directorio):

    rsync -vaP /var/lib/mysql/ /var/lib/mysql-data

  3. Asegúrese de que el nuevo directorio de datos tenga la propiedad correcta, ya sea el usuario y el grupo MySQL predeterminado o el usuario que se especifica en el archivo de opciones globales 'my.cnf'. Si no está seguro, puede utilizar el mandato siguiente para tener de forma recursiva toda la jerarquía en el usuario y grupo de MySQL.

    chown -R mysql:mysql /var/lib/mysql-data

El usuario MySQL necesita tener permiso completo (rwx) sobre las carpetas de base de datos y permiso de lectura/escritura en los archivos de registro, bin, de datos, índice y de formulario.

Normalmente, las carpetas de base de datos tienen un permiso de 700 (drwx------) y pueden ser de la propiedad de mysql:mysql, mientras se encuentren en un entorno de alojamiento compartido. El permiso se puede configurar de forma más liberal con 755 (drwxr-xr-x) en un entorno dedicado.

  1. Actualice el archivo de configuración '/etc/my.cnf' para que apunte al nuevo directorio de datos.

    Asegúrese de realizar una copia de seguridad de todo antes de editar cualquier cosa en el archivo de configuración.

    cp -vp /etc/my.cnf /etc/my.cnf.'date +%s' vi /etc/my.cnf

  2. Sustituya cualquier instancia de '/var/lib/mysql' por '/var/lib/mysql-data'. Si no tiene una entrada de datadir, colóquela dentro de la stanza [mysqld].

    [mysqld] user = mysql datadir = /var/lib/mysql-data socket = /var/lib/mysql-datal/mysql.sock

  3. Algunas aplicaciones tienen configuración personalizada y este documento no lo puede tratar. Algunos scripts son conocidos por fallar si el directorio de datos no es /var/lib/mysql. Entonces, se utiliza un enlace simbólico para señalar la nueva ubicación.

    mv -v /var/lib/mysql /var/lib/mysql.orig

    ln -s /var/lib/mysql-data /var/lib/mysql

Si no desea crear el enlace, asegúrese de cambiar el socket 'mysql.default' _socket y 'mysqli.default' _socket en 'php.ini' y detener por completo Apache e iniciarlo.

  1. Inicie el daemon de MySQL.

/etc/init.d/mysql start

  1. Verifique que MySQL funciona. Si MySQL no responde, revise los registros de error. Revierta los cambios si es necesario.

mysqladmin ping