Packs de Hosting Linux

En este artículo te explicamos cómo hacer copias de seguridad y restaurar bases de datos MySQL y MariaDB a través de tu acceso shell. Para ello, puedes utilizar los programas mysqldump y mysql, que ya vienen instalados de serie en tu pack de Hosting Linux y en los servidores gestionados.

Nota

Los procedimientos aquí descritos también son adecuados para grandes bases de datos con volúmenes superiores a 1 GB (gigabyte).

Requisitos
  • Necesitas un pack de hosting con acceso shell (o un servidor gestionado).

  • Necesita los datos de acceso a tu base de datos (nombre de host, nombre de la base de datos, nombre de usuario, contraseña).

  • Para la restauración, los datos deben estar disponibles en forma de archivo de copia de seguridad en formato SQL (archivo de volcado de SQL).

  • Se recomienda tener conocimientos básicos del shell para Linux.

Hacer una copia de seguridad de la base de datos con mysqldump

La herramienta mysqldump crea un archivo de copia de seguridad que contiene comandos SQL los cuales puedes utilizar para reconstruir la estructura de la base de datos y restaurar los datos. La copia de seguridad creada de este modo puede importarse de nuevo a una base de datos utilizando el cliente MySQL para restaurar los datos.

Haz una copia de seguridad de tu base de datos con mysqldump del siguiente modo:

  • Establece una conexión SSH con tu espacio web. A continuación, realiza los siguientes pasos en la ventana del terminal.

  • Para crear una copia de seguridad completa de tu base de datos, ejecuta el comando mysqldump según el siguiente esquema:

mysqldump --no-tablespaces --host=NOMBRE_DE_HOST --user=NOMBRE_DE_USUARIO --password=CONTRASEÑA NOMBRE_DE_LA_BASE_DE_DATOS > DATO

Sustituye los marcadores de posición escritos en mayúsculas por los datos de acceso de la base de datos de la que quieras hacer una copia de seguridad. Introduce también el nombre deseado para el archivo de copia de seguridad.

Por ejemplo:

mysqldump --no-tablespaces --host=db1234567890.hosting-data.io --user=dbu654321 --password=2gCjmnrmLkxnSefw dbs7654321 > dbs7654321_dump_29-04-2024.sql

Entonces, se creará tu archivo de copia de seguridad  y se guardará en el directorio en el que ejecutaste el comando mysqldump. Dependiendo de la cantidad de datos, el proceso puede demorarse unos minutos. A continuación, puedes descargar el archivo y guardarlo en un lugar seguro.

Advertencia

No cierres la ventana del terminal hasta que la copia de seguridad haya finalizado. De lo contrario, el proceso se cancelará.

Restaurar la base de datos con el cliente MySQL

mysql --host=NOMBRE_DE_HOST --user=NOMBRE_DE_USUARIO --password=CONTRASEÑA BASE_DE_DATOS < NOMBRE_DE_ARCHIVO

Sustituye los marcadores de posición escritos en mayúsculas por los datos de acceso de la base de datos en la que deseas restaurar los datos.

Por ejemplo:

mysql --host=db1234567890.hosting-data.io --user=dbu654321 --password=2gCjmnrmLkxnSefw dbs7654321 < dbs7654321_dump_29-04-2024.sql
Archivo de copia de seguridad en formato gzip (.gz)


Si el archivo está comprimido en formato gzip, combina el comando mysql con el comando gunzip según el siguiente esquema:

gunzip -c NOMBRE_DE_ARCHIVO| mysql --host=NOMBRE_DE_HOST --user=NOMBRE_DE_USUSARIO --password=CONTRASEÑA BASE_DE_DATOS

Por ejemplo:

gunzip -c dbs7654321_dump_29-04-2024.sql.gz | mysql --host=db1234567890.hosting-data.io --user=dbu654321 --password=2gCjmnrmLkxnSefw dbs7654321

Solución de problemas

A continuación, encontrarás sugerencias que te ayudarán a resolver los errores más frecuentes que pueden producirse al llevar a cabo estas instrucciones.

Uso de caracteres especiales


Si tus nombres de archivo, contraseñas o nombres de usuario contienen caracteres especiales, deben aparecer entre comillas en el comando mysqldump o mysql. Por ejemplo: mysqldump [...] --password='%gCjmnrmLk!xnSefw'


Mensajes de error: mysqldump
 
  • mysqldump: Got error: 1044: "Access denied for user [...] to database [...]
    Este error se produce si no se puede asignar el nombre de la base de datos especificada. 
    - Sugerencia: comprueba si el nombre de la base de datos es correcto. Presta atención a las mayúsculas y minúsculas.
  • mysqldump: Got error: 1045: "Access denied for user […]
    Este error se produce cuando un usuario intenta iniciar sesión en MySQL con datos de acceso no válidos (nombre de usuario y/o contraseña). 
    - Sugerencia: comprueba si el nombre de usuario y la contraseña son correctos. Presta atención a las mayúsculas y minúsculas.
  • mysqldump: Got error: 2005: "Unknown MySQL server host [...]
    Este error se produce cuando MySQL no puede establecer una conexión con el servidor de base de datos especificado. 
    - Sugerencia: comprueba si hay errores de escritura en el nombre del host.

 

Mensajes de error: cliente MySQL

 

  • ERROR 1044 (42000) at line X: Access denied for user [...]
    Este error se produce cuando un usuario intenta realizar una acción para la que no tiene autorización. Dependiendo de cómo se haya creado el archivo de copia de seguridad, también puede contener la instrucción de crear una base de datos. En este caso, esto no es posible, pero tampoco necesario. 
    - Sugerencia: puedes consultar qué hacer en el artículo Arreglar el error "Acceso denegado" (1044 - Access denied) al importar una base de datos MySQL/MariaDB.
     
  • ERROR 1045 (28000): Access denied for user [...]
    Este error se produce cuando un usuario intenta iniciar sesión en MySQL con datos de acceso no válidos (nombre de usuario y/o contraseña).
    - Sugerencia: comprueba si el nombre de usuario y la contraseña son correctos. Presta atención a las mayúsculas y minúsculas.
     
  • ERROR 2005 (HY000): Unknown MySQL server host [...]
    Este error se produce si MySQL no puede establecer una conexión con el servidor de la base de datos especificado.
    - Sugerencia: comprueba si hay errores de escritura en el nombre del host.

 

Ignorar error Mysql


Puedes ordenar al cliente MySQL que ignore los errores utilizando el parámetro -force. Esto significa que, aunque se produzcan errores, el proceso de importación no se detiene. En su lugar, el cliente intenta continuar con los siguientes comandos o registros de datos.

Por ejemplo:

mysql –force --host=db1234567890.hosting-data.io --user=dbu654321 --password=2gCjmnrmLkxnSefw dbs7654321 < dbs7654321_dump_29-04-2024.sql
Advertencia

Dado que los errores se ignoran, el uso de -force puede provocar problemas con la integridad de los datos. Algunos registros pueden ser incorrectos o faltar, lo que puede afectar a la calidad general de la base de datos. Se recomienda realizar comprobaciones después de la importación para asegurarse de que todos los datos se han importado correctamente.