¿Qué parámetros se leen para la inicialización de mysqldump?
Si está realizando una copia de seguridad en el servidor y las tablas son tablas MyISAM, debería considerar usar mysqlhotcopy ya que puede acelerar la copia de seguridad y la recuperación.
Hay tres formas de llamar a mysqldump:
shell> mysqldump [opciones] db_name [tablas] shell> mysqldump [opciones] ---base de datos DB1 [DB2 DB3...] shell > mysqldump [opciones] --all--database Si no se especifica ninguna tabla, o se utiliza la opción --database o --all--database, se volcará toda la base de datos.
Para obtener las opciones admitidas por su versión de mysqldump, ejecute mysqldump --help.
Si ejecuta mysqldump sin las opciones --quick o --opt, mysqldump carga el conjunto de resultados completo en la memoria antes de volcar los resultados. Esto puede causar problemas si vuelca una base de datos grande. Esta opción está habilitada de forma predeterminada, pero se puede deshabilitar usando --skip-opt.
Si está utilizando la última versión del programa mysqldump para generar un volcado para recargarlo en una versión anterior del servidor MySQL, no debe usar las opciones --opt o -e.
Mysqldump admite las siguientes opciones:
--help, -?
Mostrar información de ayuda y salir.
- --add-drop--database
Agregue una declaración DROP DATABASE antes de cada declaración CREATE DATABASE.
- --add-drop-tables
Agrega una declaración DROP TABLE antes de cada declaración CREATE TABLE.
- --add-locking
Haga referencia a cada volcado de tabla utilizando las declaraciones LOCK TABLES y UNLOCK TABLES. Velocidad de inserción mejorada al recargar archivos de volcado.
- --all--database, -A
Volcar todas las tablas en todas las bases de datos. Al igual que con el uso de la opción --database, todas las bases de datos se nombran en la línea de comando.
--allow-keywords
Permitir la creación de nombres de columnas de palabras clave. El nombre de cada columna debe ir precedido del prefijo del nombre de la tabla.
---comments[={0|1}]
Si se establece en 0, se mostrará otra información en el archivo de volcado (como la versión del programa, la versión del servidor y el host). estar deshabilitado. El resultado de --skip-comments es el mismo que --comments=0. El valor predeterminado es 1, lo que significa que se incluye información adicional.
- --compact
Produce una pequeña cantidad de resultado. Esta opción deshabilita los comentarios y habilita las opciones --skip-add-drop-tables, --no-set-names, --skip-disable-keys y --skip-add-locking.
- --compatible=name
Produce resultados que son más compatibles con otros sistemas de bases de datos o servidores MySQL más antiguos.
El valor puede ser ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_tables_options o no_field_options. Para utilizar varios valores, sepárelos con comas. Estos valores tienen el mismo significado que las opciones correspondientes que configuran el modo SQL del servidor.
No se garantiza que esta opción sea compatible con otros servidores. Solo habilita los valores actuales del modo SQL que hacen que la salida del volcado sea más compatible. Por ejemplo, --compatible=oracle no asigna tipos de Oracle ni tipos de datos que utilizan la sintaxis de anotación de Oracle.
- --complete-insert, -c
Utilice una instrucción INSERT completa que incluya nombres de columnas.
- --compress, -C
Comprime toda la información enviada entre el cliente y el servidor (si ambos admiten la compresión).
- -create-option
Incluye todas las opciones de la tabla MySQL en la declaración CREATE TABLE.
- --database, -B
Volcar múltiples bases de datos. Normalmente, mysqldump trata el argumento del primer nombre en la línea de comando como el nombre de la base de datos y los nombres subsiguientes como nombres de tablas. Cuando se utiliza esta opción, trata todos los parámetros de nombre como nombres de bases de datos. CREAR BASE DE DATOS SI NO EXISTE db_name y USE db_name se incluyen antes de exportar cada nueva base de datos.
---debug[=debug_options], -# [debug_options]
Escribe registros de depuración. La cadena debug_options suele ser 'd:t:o,file_name'.
- --default-character-set=charset
Utilice charset como juego de caracteres predeterminado.
- --delayed-insert
Utilice la instrucción INSERT DELAYED para insertar registros.
- --delete-master-logs
Elimine los registros binarios después de que se complete la operación de volcado en el servidor de replicación maestro. Esta opción habilita automáticamente --master-data.
- --disable-keys, -K
Para cada tabla, use /*!40000 ALTER TABLE tbl_name DISABLE KEYS * /; y /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; declaraciones para hacer referencia a la declaración INSERT. Esto carga el archivo de volcado más rápido porque el índice se crea después de que se hayan insertado todas las filas. Esta opción sólo se aplica a las tablas MyISAM.
- --extended-insert, -e
Utilice una sintaxis INSERT de varias líneas que contenga varias listas de VALORES. Esto hará que el archivo de volcado sea más pequeño y las inserciones serán más rápidas al recargar el archivo.
- --fields-terminate-by=..., --fields-enclosed-by=..., --fields-opcionalmente-enclosed-by=..., --fields- escaped-by=..., --lines-terminate-by=...
Estas opciones, cuando se usan con la opción -T, tienen el mismo significado que las cláusulas correspondientes de LOAD DATA INFILE.
--first-slave, -x
Impopular, ahora renombrado a --lock-all-tables.
--flush-logs, -F
Vacia los archivos de registro del servidor MySQL antes de iniciar el volcado. Esta opción requiere permiso RECARGAR. Tenga en cuenta que si esta opción se utiliza con la opción --all--database (o --A), el registro se vaciará en función de cada base de datos volcada. La excepción es cuando se usa --lock-all-tables o --master-data: en este caso, el registro solo se vacía una vez después de que todas las tablas estén bloqueadas. Si desea volcar y vaciar los registros al mismo tiempo, debe usar --lock all-tables o --master-data con --flush-logs.
--force, -f
Continuar incluso si se produce un error de SQL al volcar la tabla.
- --host=host_name, -h host_name
Volcar datos del servidor MySQL en el host especificado. El host predeterminado es localhost.
--hex-blob
Vuelca una columna de cadena binaria usando notación hexadecimal (por ejemplo, "abc" se convierte en 0x616263). Las columnas afectadas incluyen BINARY, VARBINARY y BLOB.
- --lock-all-tables, -x
Bloquea todas las tablas en todas las bases de datos. Esto se logra adoptando un bloqueo de lectura global durante todo el volcado. Esta opción desactiva automáticamente --single-transaction y --lock-tables.
- --lock-tables, -l
Bloquea todas las tablas antes de iniciar el volcado. Utilice READ LOCAL para bloquear la tabla y permitir la inserción paralela en la tabla MyISAM. Para tablas transaccionales como InnoDB y BDB, --single-transaction es una mejor opción porque no requiere bloquear la tabla en absoluto.
Tenga en cuenta que al volcar varias bases de datos, --lock-tables bloquea las tablas individualmente para cada base de datos. Por lo tanto, esta opción no garantiza la coherencia lógica de las tablas del archivo de volcado entre diferentes bases de datos. El estado de volcado de tablas en diferentes bases de datos puede ser completamente diferente.
- --master-data[=value]
Esta opción escribe la ubicación y el nombre del archivo del registro binario en la salida. Esta opción requiere permiso RELOAD y el registro binario debe estar habilitado. Si el valor de esta opción es igual a 1, la ubicación y el nombre del archivo se escribirán en la salida del volcado en forma de una instrucción CHANGE MASTER. Si se utiliza el maestro de volcado SQL para configurar el esclavo, el esclavo copiará el. Ubicación correcta del inicio del registro binario maestro. Si el valor de la opción es igual a 2, la declaración CHANGE MASTER se escribe como un comentario SQL. Si se omite el valor, esta es la acción predeterminada.
La opción --master-data habilita --lock-all-tables, a menos que también se especifique --single-transaction (en cuyo caso el bloqueo de lectura global solo se adquiere brevemente cuando se inicia el volcado por primera vez). ). Consulte también --single-transaction; en cualquier caso, las operaciones relacionadas con el registro se producirán en el momento del volcado.
--no-create-db,-n
Esta opción deshabilita la instrucción CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name si --database o --all son opción de base de datos utilizada, la declaración se incluirá en el resultado.
--no-create-info, -t
No escriba una instrucción CREATE TABLE que recree cada tabla de volcado.
- --no-data, -d
No escribe ninguna información de fila en la tabla. Esto es útil si sólo desea deshacerse de la estructura de la tabla.
--opt
Esta opción es abreviada y equivale a especificar --add-drop-tables --add-locking --create-option --disable-keys - - inserción extendida --lock-tables --quick --set-charset. set-charset proporciona operaciones de volcado rápidas y produce un archivo de volcado que se puede cargar rápidamente en el servidor MySQL. Esta opción está habilitada de forma predeterminada, pero se puede deshabilitar usando --skip-opt. Para deshabilitar solo las opciones que definitivamente habilitan -opt, use el formulario --skip, por ejemplo, --skip-add-drop-tables o --skip-quick. Si utiliza la opción corta (-p), no debe haber espacios entre la opción y la contraseña. Si se omite --password o el valor de contraseña después de la opción -p en la línea de comando, el sistema le pedirá que ingrese una contraseña.
- --port=port_num, -P port_num
El número de puerto TCP/IP que se utilizará para la conexión.
- --protocol={TCP | SOCKET | PIPE | MEMORIA}
El protocolo utilizado para la conexión.
- --quick, -q
Esta opción se utiliza para volcar tablas grandes. Obliga a mysqldump a recuperar los registros de la tabla uno a la vez desde el servidor, en lugar de recuperar todos los registros y almacenarlos en caché en la memoria antes de generarlos.
- --quote-names, -Q
Utilice el carácter "`" para citar nombres de bases de datos, tablas y columnas. Si el modo SQL del servidor contiene la opción ANSI_QUOTES, utilice el carácter "" para citar el nombre. Esta opción está habilitada de forma predeterminada. Esta opción se puede deshabilitar usando --skip-quote-names, pero debe usarse después de otras opciones como --compatible que habilita --quote-names.
--result-file=archivo, -r archivo
Salida directa al archivo dado. Esta opción debe usarse en Windows, ya que deshabilita la conversión de caracteres de nueva línea "\n" en secuencias de retorno de carro, retorno de carro/salto de línea "\r\n".
- --routines, -R
Volcar procedimientos almacenados (funciones y procedimientos) en una base de datos de volcado. La salida producida al usar --routines contiene declaraciones CREATE PROCEDURE y CREATE FUNCTION para recrear subrutinas. Sin embargo, estas declaraciones no contienen atributos como definidores de subrutinas o marcas de tiempo de creación y modificación. Esto indica que cuando se recarga la subrutina, el delimitador cuando se creó la subrutina debe establecerse en el usuario de recarga y la marca de tiempo igual al tiempo de recarga.
No utilice --routines si necesita crear subrutinas que utilicen los atributos originales de definidor y marca de tiempo. En su lugar, utilice una cuenta MySQL con los permisos adecuados en la base de datos mysql para volcar y recargar el contenido de la tabla mysql.proc directamente.
Esta opción fue agregada en MySQL 5.1.2. Hasta entonces, no se descartará el procedimiento almacenado.
- --set-charset
Agrega SET NAMES default_character_set a la salida. Esta opción está habilitada de forma predeterminada. Para deshabilitar la declaración SET NAMES, use --skip-set-charset.
- --single-transaction
Esta opción emite una declaración BEGIN SQL desde el servidor antes de volcar los datos. . Solo funciona con tablas transaccionales (como InnoDB y BDB) porque cuando se emite un BEGIN, volca un estado de base de datos consistente sin bloquear ninguna aplicación.
Al utilizar esta opción, recuerde que solo las tablas InnoDB se pueden volcar en un estado consistente. Por ejemplo, cualquier tabla MyISAM o HEAP que se haya volcado seguirá cambiando de estado al utilizar esta opción.
La opción --single-transaction y --lock-tables son mutuamente excluyentes, porque LOCK TABLES hace que cualquier transacción pendiente se confirme implícitamente.
Para volcar tablas grandes, esta opción debe usarse con --quick.
- --socket=ruta, -S ruta
El archivo de socket que se utilizará al conectarse al host local (el host predeterminado).
- --skip-comments
Ver la descripción de la opción --comments.
- --tab=ruta, -T ruta
Generar archivos de datos delimitados por tabulaciones. Para cada tabla volcada, mysqldump crea un archivo tbl_name.sql que contiene la instrucción CREATE TABLE que creó la tabla y un archivo tbl_name.txt que contiene sus datos. El valor de la opción es el directorio en el que se escribe el archivo.
De forma predeterminada, los archivos de datos .txt tienen formato con tabulaciones entre los valores de las columnas y una nueva línea después de cada línea. Obviamente, el formato se puede especificar usando las opciones --fields-xxx y --lines-xxx.
Nota: Esta opción sólo se aplica si mysqldump se está ejecutando en la misma máquina que el servidor mysqld. Debe tener permiso de ARCHIVO y el servidor debe tener permiso para escribir archivos en el directorio que especifique.
- --tables
Anula la opción --database o -B. Todos los argumentos que siguen a esta opción se tratan como nombres de tablas.
- --triggers
Disparadores de volcado para cada tabla de volcado. Esta opción está habilitada de forma predeterminada; use --skip-triggers para deshabilitarla.
- --tz-utc
Incluya SET TIME_ZONE='+00:00' en el archivo de volcado para volcar y recargar TIMESTAMP entre servidores en diferentes zonas horarias. (Sin esta opción, las columnas TIMESTAMP se volcarán y recargarán entre los servidores de origen y de destino con zonas horarias locales). --tz-utc también evita los cambios causados por el horario de verano. --tz-utc está habilitado de forma predeterminada. Para desactivarlo, utilice --skip-tz-utc. Esta opción se agregó en MySQL 5.1.2.
- --user=nombre_usuario, -u nombre_usuario
El nombre de usuario de MySQL que se utilizará al conectarse al servidor.
- --verbose, -v
Modo redundante. Imprime información detallada sobre el funcionamiento del programa.
- --version, -V
Muestra información de la versión y sale.
- --where='where-condition', -w 'where-condition'
Vuelca solo los registros seleccionados según la condición WHERE dada. Tenga en cuenta que si la condición contiene espacios o caracteres específicos del intérprete de comandos, asegúrese de citar la condición.
Por ejemplo:
"--where=user='jimf'" "-wuserid>1" "-wuserid<1" -xml, -X
Escribir la salida del volcado en XML.
También puede utilizar la opción --var_name=value para configurar las siguientes variables:
- max_allowed_packet
El tamaño máximo de la caché de comunicación cliente/servidor . El tamaño máximo es 1 GB.
- net_buffer_length
El tamaño inicial del búfer de comunicación cliente/servidor. Al crear una declaración de inserción de varias filas (como usar las opciones --extended-insert o --opt), mysqldump crea filas que no superan la longitud net_buffer_length. Si agrega esta variable, también debe asegurarse de que la variable net_buffer_length en el servidor MySQL tenga al menos esta longitud.
También puedes usar la sintaxis --set-variable=var_name=value o -O var_name=value para establecer variables. Sin embargo, actualmente no se recomienda esta sintaxis.
mysqldump se usa más comúnmente para hacer una copia de seguridad de una base de datos completa:
shell> mysqldump --opt db_name > backup-file.sql Puede leer el archivo de volcado en el servidor como esto:
shell> mysql db_name < backup-file. nombre < backup-file.sql o haga lo siguiente:
shell> mysql -e "source /path-to-backup /backup-file.sql " db_name mysqldump también se puede utilizar para cargar una base de datos al copiar datos de un servidor MySQL a otro:
shell> mysql db_name < backup-file.sql Cargar al copiar datos de uno Servidor MySQL a otra base de datos:
shell> mysqldump --opt db_name | host=remote_host -C db_name Utilice un comando para volcar múltiples bases de datos:
shell> mysqldump -- - base de datos db_name1 [db_name2 ...] > my_databases.sql Si desea volcar todas las bases de datos, utilice la opción --all--database:
shell> mysqldump --all-databases > all_databases.sql Si la tabla se almacena en el motor de almacenamiento InnoDB, mysqldump proporciona un método para realizar copias de seguridad en línea (consulte el comando a continuación). Esta copia de seguridad solo requiere un bloqueo de lectura global en todas las tablas (usando FLUSH TABLES CON READ LOCK) al comienzo del volcado. Una vez obtenido el bloqueo, se lee el contenido correspondiente en el registro binario y se libera el bloqueo. Por lo tanto, si y sólo si FLUSH... está ejecutando una declaración de actualización larga, el servidor MySQL se detiene hasta que finaliza la declaración larga y luego el volcado libera el bloqueo. Por lo tanto, si el servidor MySQL solo recibe declaraciones de actualización cortas ("tiempo de ejecución corto"), no notará el tiempo de bloqueo incluso si hay una gran cantidad de declaraciones.
shell> mysqldump --all-databases --single-transaction > all_databases.sql Para restauraciones punto a punto (también conocidas como "reversiones", cuando necesita restaurar una copia de seguridad antigua y reproducirla copia de seguridad en un momento posterior), el servidor MySQL no nota el período de bloqueo.
shell> mysqldump --all-databases --master-data=2 > all_databases.sql o shell> mysqldump --all-databases --master-data=2 > all_databases.sql o shell>. --all-databases --flush-logs --master-data=2 > all_databases.sql Si la tabla está almacenada en el motor de almacenamiento InnoDB, el uso de --master-data y --single-transaction puede realizar fácilmente puntos- ejecución punto a punto Restaurar copia de seguridad en línea.