por - respaldar base de datos mysql phpmyadmin
Cómo tomar una copia de seguridad completa de la base de datos mysql usando la utilidad de línea de comandos mysqldump (6)
¿Cómo puedo hacer una copia de seguridad completa de la base de datos mysql usando mysqldump? Cuando realizo una copia de seguridad, mis tablas de la base de datos especificada solo se copian. Los procedimientos y funciones no son
Aquí está el comando de respaldo que estoy usando:
(El sistema operativo es Windows Vista.)
mysqldump -u username -p db1 > backup.sql
Además del indicador --routines, deberá otorgar los permisos de usuario de la copia de seguridad para leer los procedimientos almacenados:
GRANT SELECT ON `mysql`.`proc` TO <backup user>@<backup host>;
Mi conjunto mínimo de privilegios de GRANT para el usuario de la copia de seguridad es:
GRANT USAGE ON *.* TO ...
GRANT SELECT, LOCK TABLES ON <target_db>.* TO ...
GRANT SELECT ON `mysql`.`proc` TO ...
Depende un poco de tu versión. Antes de 5.0.13 esto no es posible con mysqldump.
Desde la página man de mysqldump (v 5.1.30)
--routines, -R
Dump stored routines (functions and procedures) from the dumped
databases. Use of this option requires the SELECT privilege for the
mysql.proc table. The output generated by using --routines contains
CREATE PROCEDURE and CREATE FUNCTION statements to re-create the
routines. However, these statements do not include attributes such
as the routine creation and modification timestamps. This means that
when the routines are reloaded, they will be created with the
timestamps equal to the reload time.
...
This option was added in MySQL 5.0.13. Before that, stored routines
are not dumped. Routine DEFINER values are not dumped until MySQL
5.0.20. This means that before 5.0.20, when routines are reloaded,
they will be created with the definer set to the reloading user. If
you require routines to be re-created with their original definer,
dump and load the contents of the mysql.proc table directly as
described earlier.
Estoy usando MySQL 5.5.40. Esta versión tiene la opción --all-databases
mysqldump -u<username> -p<password> --all-databases --events > /tmp/all_databases__`date +%d_%b_%Y_%H_%M_%S`.sql
Este comando creará una copia de seguridad completa de todas las bases de datos en el servidor MySQL en un archivo con el nombre de fecha y hora actual.
Si desea realizar una copia de seguridad completa, es decir, todas las bases de datos, procedimientos, rutinas y eventos sin interrumpir ninguna conexión:
mysqldump -u [username] -p -A -R -E --triggers --single-transaction > full_backup.sql
-
-A
Para todas las bases de datos (también puede usar--all-databases
) -
-R
Para todas las rutinas (procedimientos almacenados y disparadores) -
-E
Para todos los eventos -
--single-transaction
Sin bloquear las tablas, es decir, sin interrumpir ninguna conexión (R / W).
Si desea realizar una copia de seguridad de solo las bases de datos especificadas:
mysqldump -u [username] -p [database_name] [other_database_name] -R -e --triggers --single-transaction > database_backup.sql
Si desea realizar una copia de seguridad de solo una tabla específica en una base de datos:
mysqldump -u [username] -p [database_name] [table_name] > table_backup.sql
Si desea realizar una copia de seguridad de la estructura de la base de datos, solo agregue --no-data
a los comandos anteriores:
mysqldump -u [username] –p[password] –-no-data [database_name] > dump_file.sql
mysqldump
tiene muchas más opciones, que están documentadas en la documentación de mysqldump
o ejecutando man mysqldump
en la línea de comandos.
Use ''-R'' para realizar una copia de seguridad de los procedimientos almacenados, pero también tenga en cuenta que si desea un volcado uniforme de su base de datos mientras se está modificando, debe usar --single-transaction
(si solo realiza una copia de seguridad de innodb) o --lock-all-tables
(si también necesita tablas myisam)
Use estos comandos:
mysqldump <other mysqldump options> --routines > outputfile.sql
Si queremos hacer una copia de seguridad SOLAMENTE de los procedimientos almacenados y desencadenadores y no de las tablas y datos de mysql, entonces deberíamos ejecutar algo como:
mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt <database> > outputfile.sql
Si necesita importarlos a otro db / server, deberá ejecutar algo como:
mysql <database> < outputfile.sql