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 datosdb1
: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.
-
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
-
Restringir permisos del archivo de credenciales:
chmod 600 /home/example_user/.mylogin.cnf
-
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 MySQLmysql -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