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

Use mysqldump para respaldar MySQL o MariaDB

MySQL y MariaDB incluyen la utilidad mysqldump para simplificar el proceso de creación de una copia de seguridad de una base de datos o sistema de bases de datos. Usando mysqldump crea una copia de seguridad lógica . Solo puede usar esta herramienta si el proceso de su base de datos está accesible y en ejecución.

Si su base de datos no es accesible por algún motivo, puede crear una copia de seguridad física. , que es una copia de la estructura del sistema de archivos que contiene sus datos.

Las instrucciones de esta guía se aplican tanto a MySQL como a MariaDB. Para simplificar, se usará el nombre MySQL para aplicar a cualquiera.

Antes de comenzar

  • Necesitará una instalación de MySQL o MariaDB que funcione y un usuario de la base de datos para ejecutar la copia de seguridad. Para obtener ayuda con la instalación, consulte la documentación de Linode MySQL.

  • Necesitará acceso de root al sistema o una cuenta de usuario con sudo privilegios.

Copia de seguridad de una base de datos

El mysqldump La sintaxis general del comando es:

mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
  • mysqldump solicita una contraseña antes de iniciar el proceso de copia de seguridad.
  • Según el tamaño de la base de datos, puede tardar un poco en completarse.
  • La copia de seguridad de la base de datos se creará en el directorio donde se ejecuta el comando.
  • -$(date +%F) agrega una marca de tiempo al nombre del archivo.

Ejemplos de casos de uso incluyen:

  • Cree una copia de seguridad de un sistema de gestión de base de datos (DBMS) completo:

      mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
    
  • Copia de seguridad de una base de datos específica. Reemplazar db1 con el nombre de la base de datos que desea respaldar:

      mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
    
  • Realice una copia de seguridad de una sola tabla desde cualquier base de datos. En el siguiente ejemplo, table1 se exporta desde la base de datos db1 :

      mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
    

Aquí hay un desglose de mysqldump opciones de comando utilizadas anteriormente:

  • --single-transaction :emita una instrucción BEGIN SQL antes de descargar datos del servidor.
  • --quick :Hacer cumplir las tablas de volcado fila por fila. Esto proporciona mayor seguridad para los sistemas con poca RAM y/o grandes bases de datos donde el almacenamiento de tablas en la memoria podría resultar problemático.
  • --lock-tables=false :No bloquear tablas para la sesión de copia de seguridad.

Automatizar copias de seguridad con cron

Las entradas se pueden agregar a /etc/crontab para programar periódicamente copias de seguridad de la base de datos.

  1. Cree un archivo para almacenar las credenciales de inicio de sesión del usuario root de MySQL que realizará la copia de seguridad. Tenga en cuenta que el usuario del sistema cuyo directorio de inicio está almacenado este archivo puede no estar relacionado con ningún usuario de MySQL.

    Archivo:/ home/example_user/.mylogin.cnf
    1
    2
    3
    
    [client]
    user = root
    password = MySQL root user's password
  2. Restringir permisos del archivo de credenciales:

    chmod 600 /home/example_user/.mylogin.cnf
    
  3. Cree el archivo de trabajo cron. A continuación se muestra un trabajo cron de ejemplo para hacer una copia de seguridad de todo el sistema de administración de la base de datos todos los días a la 1 a. m.:

    Archivo:/ etc/cron.daily/mysqldump
    1
    
    0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql

    Para obtener más información sobre cron, consulte las páginas de manual de cron(8) y cron(5).

Restaurar una copia de seguridad

La sintaxis general del comando de restauración es:

mysql -u [username] -p [databaseName] < [filename].sql
  • Restaurar una copia de seguridad DBMS completa. Se le pedirá la contraseña del usuario root de MySQL:
    Esto sobrescribirá todos los datos actuales en el sistema de base de datos MySQL

      mysql -u root -p < full-backup.sql
    
  • Restaurar un único volcado de base de datos. Ya debe existir una base de datos de destino antigua o vacía para importar los datos, y el usuario de MySQL con el que está ejecutando el comando debe tener acceso de escritura a esa base de datos:

      mysql -u [username] -p db1 < db1-backup.sql
    
  • Restaure una sola tabla, debe tener una base de datos de destino lista para recibir los datos:

      mysql -u dbadmin -p db1 < db1-table1.sql
    

Más información

Es posible que desee consultar los siguientes recursos para obtener información adicional sobre este tema. Si bien estos se proporcionan con la esperanza de que sean útiles, tenga en cuenta que no podemos garantizar la precisión o la puntualidad de los materiales alojados externamente.

  • Página de métodos de copia de seguridad de la base de datos MySQL
  • mysqldump - Un programa de respaldo de base de datos, manual de referencia de MySQL