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

Exportar base de datos MySQL o MariaDB

Hacer una copia de seguridad de la base de datos de forma regular es uno de los pasos cruciales después de poner en marcha el proyecto. La frecuencia de la copia de seguridad puede ser una vez al día o una vez a la semana. La copia de seguridad diaria se prefiere para las aplicaciones en las que los cambios de base de datos son más frecuentes. En el caso de bases de datos de alta disponibilidad, se debe considerar una configuración de clúster adecuada en lugar de una escala vertical. Este tutorial explica el uso de mysqldump Comando para realizar la copia de seguridad de la base de datos. El mismo comando se puede automatizar para realizar copias de seguridad programadas.

Notas :este tutorial solo cubre las opciones más comunes utilizadas con mysqldump dominio. También puede consultar la documentación oficial para explorar todas las opciones posibles. Los mismos comandos se pueden usar para realizar la copia de seguridad de los servidores de bases de datos MySQL y MariaDB.

Copia de seguridad local

Copia de seguridad - Esta sección explica cómo realizar una copia de seguridad local en un archivo mediante la exportación de una o varias bases de datos.

Permisos - mysqldump requiere los privilegios enumerados a continuación para exportar la base de datos. Se deben asignar los privilegios apropiados a la cuenta de usuario utilizada para exportar la base de datos.

  • SELECT - para volcar tablas
  • MOSTRAR VISTA - para volcar vistas
  • TRIGGER - para volcar activadores
  • BLOQUEAR TABLAS:en caso de que no se use la opción de transacción única

Comando - A continuación se menciona el uso de mysqldump Comando para realizar una copia de seguridad local para sistemas basados ​​en Windows y Linux, incluido Ubuntu. Los puntos triples significan que se pueden proporcionar varios valores.

# Regular command - Usage - Windows, Linux
mysqldump [options] db_name [tbl_name ...] > <file path>
mysqldump [options] --databases db_name ... > <file path>
mysqldump [options] --all-databases > <file path>

Los ejemplos para usar el comando regular son los que se mencionan a continuación. Estos comandos de ejemplo utilizan el usuario enterprise para realizar copias de seguridad de la base de datos enterprise . No es necesario especificar el usuario y la contraseña en caso de que la cuenta de usuario utilice auth_socket algoritmo para iniciar sesión en el servidor MySQL. El usuario del sistema puede acceder directamente a la base de datos. Puede consultar Cómo usar una contraseña nativa con MySQL 5.7 y Cómo instalar MySQL 8 en Ubuntu para obtener más información sobre los algoritmos de contraseña.

Notas :No es necesario utilizar la opción -p, en caso de que no se asigne ninguna contraseña al usuario.

A continuación se mencionan los ejemplos para hacer una copia de seguridad de una sola base de datos con nombre de usuario, host y puerto. La contraseña no debe proporcionarse con estos comandos por motivos de seguridad. Puede especificar la contraseña para mysqldump en el archivo de configuración que se considera una opción segura para cron trabajos. Otra opción es usar el comando cat para usar una contraseña encriptada (similar a como está usando Plesk) como se muestra en los ejemplos. El sistema solicitará la contraseña en caso de que no se proporcione dentro del comando. Estos comandos se pueden usar para exportar la base de datos completa o tablas individuales o múltiples.

# All tables - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise > enterprise.sql

# All tables - with username, with password - insecure
mysqldump -u enterprise -p'mypwd' enterprise > enterprise.sql

# All tables - with username, with password - Plesk way
mysqldump -u enterprise -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql

# All tables - with host, with port, with username, without password - prompts for password
mysqldump -h localhost -p 3306 -u enterprise -p enterprise > enterprise.sql

# Single table(user) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise [user] > enterprise.sql

# Multiple tables(user, profile) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise user profile > enterprise.sql

A continuación se mencionan los ejemplos para realizar copias de seguridad de múltiples bases de datos con nombre de usuario, host y puerto.

# Multiple databases - with username, without password - prompts for password
mysqldump -u enterprise -p --databases enterprise vblog mshop > mydbs.sql

# Multiple databases - with username, with password
mysqldump -u enterprise -p'mypwd' --databases enterprise vblog mshop > mydbs.sql

A continuación se menciona el ejemplo para hacer una copia de seguridad de todas las bases de datos con nombre de usuario, host y puerto.

# All databases - with username, without password - prompts for password
mysqldump -u enterprise -p --all-databases > mydbs.sql

# All databases - with username, with password
mysqldump -u enterprise -p'mypwd' --all-databases > mydbs.sql

Los usuarios de PowerShell en Windows necesitarán un comando diferente como se menciona a continuación.

# PowerShell on Windows
shell> mysqldump [options] db_name [tbl_name ...] --result-file=<file path>
shell> mysqldump [options] --databases db_name ... --result-file=<file path>
shell> mysqldump [options] --all-databases --result-file=<file path>

# Example
shell> mysqldump -u enterprise -p enterprise --result-file=mydump.sql

Los comandos mencionados anteriormente exportarán la base de datos y las tablas seleccionadas a la ubicación del archivo especificada en el comando.

Copia de seguridad de la base de datos

Esta sección explica cómo llevar la copia de seguridad de la base de datos a otra base de datos utilizada con fines de copia de seguridad utilizando Shell Pipes. Podemos exportar la base de datos al archivo local y luego usar este archivo para importar a otra base de datos o exportar directamente a otra base de datos usando shell pipes.

El comando mencionado a continuación se puede usar para exportar la base de datos directamente a otra base de datos. Además, asegúrese de tener acceso a ambos servidores antes de ejecutar el comando.

# Export database to another database - Same server
mysqldump -u enterprise -p enterprise | mysql enterprise_backup

# Export database to another database - Different server
mysqldump -u enterprise -p enterprise | mysql -h host.example.com -p 3306 enterprise

Así es como podemos exportar o hacer una copia de seguridad de una base de datos.