MySQL
Copia de seguridad utilizando mysqldump
Buscar..
Sintaxis
- mysqldump -u [nombre de usuario] -p [contraseña] [otras opciones] db_name> dumpFileName.sql /// Para respaldar una base de datos única
- mysqldump -u [nombre de usuario] -p [contraseña] [otras opciones] db_name [tbl_name1 tbl_name2 tbl_name2 ...]> dumpFileName.sql /// Para respaldar una o más tablas
- mysqldump -u [nombre de usuario] -p [contraseña] [otras opciones] --databases db_name1 db_name2 db_name3 ...> dumpFileName.sql /// Para hacer una copia de seguridad de una o más bases de datos completas
- mysqldump -u [nombre de usuario] -p [contraseña] [otras opciones] --todos-bases de datos> dumpFileName.sql /// Para respaldar todo el servidor MySQL
Parámetros
Opción | Efecto |
---|---|
- | # Opciones de inicio de sesión del servidor |
-h ( --host ) | Host (dirección IP o nombre de host) para conectarse. El valor predeterminado es localhost ( 127.0.0.1 ) Ejemplo: -h localhost |
-u ( --user ) | Usuario de MySQL |
-p ( --password ) | Contraseña MySQL. Importante : Al usar -p , no debe haber un espacio entre la opción y la contraseña. Ejemplo: -pMyPassword |
- | # Opciones de volcado |
--add-drop-database | Agregue una instrucción DROP DATABASE antes de cada instrucción CREATE DATABASE . Útil si quieres reemplazar bases de datos en el servidor. |
--add-drop-table | Agregue una instrucción DROP TABLE antes de cada instrucción CREATE TABLE . Útil si quieres reemplazar tablas en el servidor. |
--no-create-db | Suprimir las CREATE DATABASE en el volcado. Esto es útil cuando está seguro de que las bases de datos que está volcando ya existen en el servidor donde cargará el volcado. |
-t ( --no-create-info ) | Suprimir todas las declaraciones CREATE TABLE en el volcado. Esto es útil cuando desea volcar solo los datos de las tablas y usará el archivo de volcado para rellenar tablas idénticas en otra base de datos / servidor. |
-d ( --no-data ) | No escriba información de la tabla. Esto solo volcará las CREATE TABLE . Útil para crear bases de datos de "plantillas" |
-R ( --routines ) | Incluir procedimientos / funciones almacenados en el volcado. |
-K ( --disable-keys ) | Desactive las claves para cada tabla antes de insertar los datos y habilite las claves después de insertar los datos. Esto acelera las inserciones solo en tablas MyISAM con índices no únicos. |
Observaciones
La salida de una operación mysqldump
es un archivo ligeramente comentado que contiene sentencias de SQL secuenciales que son compatibles con la versión de las utilidades de MySQL que se usaron para generarlo (con atención prestada a la compatibilidad con versiones anteriores, pero sin garantía para las futuras). Por lo tanto, la restauración de una base de datos mysqldump
ed comprende la ejecución de esas declaraciones. En general, este archivo
-
DROP
es la primera tabla o vista especificada -
CREATE
esa tabla o vista - Para tablas volcadas con datos (es decir, sin la
--no-data
)-
LOCK
la mesa -
INSERT
s todas las filas de la tabla original en una declaración
-
-
UNLOCK TABLES
- Repite lo anterior para todas las demás tablas y vistas.
-
DROP
s la primera rutina incluida -
CREATE
s esa rutina - Repite lo mismo para todas las demás rutinas.
La presencia del DROP
antes de CREATE
para cada tabla significa que si el esquema está presente, ya sea que esté vacío o no, el uso de un archivo mysqldump
para su restauración completará o sobrescribirá los datos que contiene.
Creación de una copia de seguridad de una base de datos o tabla
Crear una instantánea de una base de datos completa:
mysqldump [options] db_name > filename.sql
Crea una instantánea de múltiples bases de datos:
mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql
Cree una instantánea de una o más tablas:
mysqldump [options] db_name table_name... > filename.sql
Cree una instantánea excluyendo una o más tablas:
mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql
La extensión de archivo .sql
es totalmente una cuestión de estilo. Cualquier extensión funcionaría.
Especificando nombre de usuario y contraseña
> mysqldump -u username -p [other options]
Enter password:
Si necesita especificar la contraseña en la línea de comando (por ejemplo, en un script), puede agregarla después de la opción -p
sin un espacio:
> mysqldump -u username -ppassword [other options]
Si la contraseña contiene espacios o caracteres especiales, recuerde utilizar el escape en función de su shell / sistema.
Opcionalmente la forma extendida es:
> mysqldump --user=username --password=password [other options]
(La Explicidad que especifica la contraseña en la línea de comandos no es Recomendada debido a problemas de seguridad).
Restaurar una copia de seguridad de una base de datos o tabla
mysql [options] db_name < filename.sql
Tenga en cuenta que:
-
db_name
debe ser una base de datos existente; - su usuario autenticado tiene privilegios suficientes para ejecutar todos los comandos dentro de su
filename.sql
; - La extensión de archivo
.sql
es totalmente una cuestión de estilo. Cualquier extensión funcionaría. - No puede especificar un nombre de tabla para cargar, aunque podría especificar uno para volcar desde. Esto debe hacerse dentro de
filename.sql
.
Alternativamente, cuando esté en la herramienta de línea de comandos de MySQL , puede restaurar (o ejecutar cualquier otro script) usando el comando de origen:
source filename.sql
o
\. filename.sql
mysqldump desde un servidor remoto con compresión
Con el fin de utilizar la compresión sobre el alambre para una transferencia más rápida, pasar el --compress
opción de mysqldump
. Ejemplo:
mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql
Importante: si no desea bloquear la base de datos de origen , también debe incluir --lock-tables=false
. Pero puede que no obtengas una imagen de db internamente consistente de esa manera.
Para guardar también el archivo comprimido, puede canalizar a gzip
.
mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz
restaura un archivo mysqldump comprimido sin descomprimir
gunzip -c dbname.sql.gz | mysql dbname -u username -p
Nota: -c
significa salida de escritura a la salida estándar.
Copia de seguridad directa a Amazon S3 con compresión
Si desea realizar una copia de seguridad completa de una gran instalación de MySql y no tiene suficiente almacenamiento local, puede volcarla y comprimirla directamente en un depósito de Amazon S3. También es una buena práctica hacer esto sin tener la contraseña DB como parte del comando:
mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
--verbose --hex-blob --routines --triggers --all-databases |
gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz
Se le solicitará la contraseña, después de lo cual se iniciará la copia de seguridad.
Transferencia de datos de un servidor MySQL a otro
Si necesita copiar una base de datos de un servidor a otro, tiene dos opciones:
Opción 1:
- Almacena el archivo de volcado en el servidor de origen
- Copie el archivo de volcado a su servidor de destino
- Cargue el archivo de volcado en su servidor de destino
En el servidor de origen:
mysqldump [options] > dump.sql
En el servidor de destino, copie el archivo de volcado y ejecute:
mysql [options] < dump.sql
Opcion 2:
Si el servidor de destino puede conectarse al servidor host, puede usar una canalización para copiar la base de datos de un servidor a otro:
En el servidor de destino
mysqldump [options to connect to the source server] | mysql [options]
Del mismo modo, el script podría ejecutarse en el servidor de origen, empujando hacia el destino. En cualquier caso, es probable que sea significativamente más rápido que la Opción 1.
Base de datos de copia de seguridad con procedimientos almacenados y funciones
De manera predeterminada, los procedimientos y funciones almacenados o no generados por mysqldump
, deberá agregar el parámetro --routines
(o -R
):
mysqldump -u username -p -R db_name > dump.sql
Al utilizar --routines
las --routines
creación y cambio no se mantienen, en su lugar, debe volcar y volver a cargar el contenido de mysql.proc
.