Red de conocimiento informático - Material del sitio web - Cómo escribir sentencias SQL para hacer una copia de seguridad de la base de datos MYSQL

Cómo escribir sentencias SQL para hacer una copia de seguridad de la base de datos MYSQL

Explicación detallada de la copia de seguridad y recuperación de mysqldump y lista completa de declaraciones de importación y exportación de mysqldump

Copia de seguridad de Mysqldump:

mysqldump -u nombre de usuario -p contraseña -h host db1 a -w "condición de sql " ---lockall -tables >ruta

Caso:

mysqldump -uroot -p1234 -hlocalhost db1 a -w "id en (seleccione id de b)" --lockall- tablas > c:\ aa.txt

restauración de mysqldump:

mysqldump -u nombre de usuario -p contraseña -h base de datos del host < ruta

caso:

mysql -uroot -p1234 db1 < c:\aa.txt

exportación de mysqldump condicionalmente:

mysqldump -u nombre de usuario -p contraseña -h Base de datos del host a --where "declaración condicional" --o-create-table> ruta

mysqldump -uroot -p1234 dbname a --where "tag='88'" --o-create-info> c:\aa. sql

exportación de mysqldump por importación:

mysqldump -u nombre de usuario -p contraseña -h base de datos host < ruta

Caso:

mysql -uroot -p1234 db1 < c:\a.txt

tabla de exportación mysqldump:

mysqldump -u nombre de usuario -p contraseña -h tabla de base de datos del host

Caso :

mysqldump -uroot -p sqlhk9 a --no-data

Describe algunos de los parámetros principales de mysqldump

--compatible=name

Indica con qué base de datos o versión anterior del servidor MySQL serán compatibles los datos exportados por mysqldump. Los valores pueden ser ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_tables_options, no_field_options, etc. para usar múltiples valores, sepárelos con comas. Por supuesto, esto no garantiza una compatibilidad total, pero será lo más compatible posible.

--complete-insert, -c

Los datos exportados se insertarán mediante un INSERT completo incluyendo el nombre del campo, es decir, todos los valores se escriben en una línea. Esto puede mejorar la eficiencia de la inserción, pero puede verse afectado por el parámetro max_allowed_packet, lo que provoca que las inserciones fallen. Por lo tanto, este parámetro debe usarse con precaución, al menos yo no lo recomiendo.

--default-character-set=charset

Especifique el juego de caracteres utilizado al exportar datos. Si la tabla no utiliza el juego de caracteres latino1 predeterminado, debe especificar esta opción al exportar; de lo contrario, los datos serán un desastre cuando los importe nuevamente.

--disable-keys

El comando mysqldump agrega /*!40000 ALTER TABLE table DISABLE KEYS */ y /*!40000 ALTER TABLE table ENABLE al principio y al final de la instrucción INSERT. KEYS */; esto puede mejorar en gran medida la capacidad de insertar datos porque reconstruirá el índice después de que se hayan insertado todos los datos. Esta opción sólo se aplica a las tablas MyISAM.

--extended-insert = true|false

De forma predeterminada, mysqldump habilita el modo --complete-insert (inserción completa), por lo que si no desea utilizar este modo, use esta opción y configúrela en falso.

--hex-blob

Exporta campos de cadena binaria en formato hexadecimal. Esta opción debe usarse si hay datos binarios. Los tipos de campos afectados incluyen BINARY, VARBINARY y BLOB.

--lock-all-tables, -x

Envíe una solicitud para bloquear todas las tablas en todas las bases de datos antes de iniciar la exportación para garantizar la coherencia de los datos. Este es un bloqueo de lectura global que desactiva automáticamente las opciones --single-transaction y --lock-tables.

--lock-tables

Es similar a --lockall-tables, pero bloquea la tabla de datos actualmente exportada en lugar de bloquear todas las tablas en todas las bibliotecas al mismo tiempo. Esta opción solo está disponible para tablas MyISAM, para tablas Innodb puede usar la opción --single-transaction.

--no-create-info, -t

Exporta solo los datos sin agregar una instrucción CREATE TABLE.

--no-data, -d

No exporta ningún dato, solo la estructura de la tabla de la base de datos.

--opt

Esta es solo una opción de acceso directo, equivalente a agregar --add-drop-tables --add-locking --create-option --disable-keys - -inserción-extendida --lock-tables --rápido ---opciones de conjunto de caracteres. Esta opción permite a mysqldump exportar datos rápidamente y los datos exportados también se pueden importar rápidamente. Esta opción está habilitada de forma predeterminada, pero se puede desactivar con --skip-opt. Tenga en cuenta que si ejecuta mysqldump sin especificar las opciones --quick o --opt, todo el conjunto de resultados estará en la memoria. Esto puede causar problemas al exportar bases de datos grandes.

--quick, -q

Esta opción es muy útil al exportar tablas grandes. Obliga a mysqldump a obtener los registros de la consulta del servidor y generarlos directamente en lugar de obtener todos los. registros y almacenados en caché en la memoria.

--rutinas, -R

Exporta procedimientos almacenados y funciones personalizadas.

-transacción única

Esta opción envía una declaración BEGIN SQL antes de exportar datos. BEGIN no bloquea ninguna aplicación y garantiza que la base de datos permanezca en un estado consistente cuando se exporta. Sólo funciona con tablas transaccionales como InnoDB y BDB.

Esta opción y la opción --lock-tables son mutuamente excluyentes, porque LOCK TABLES hace que cualquier transacción pendiente se confirme implícitamente.

Al exportar tablas grandes, la opción --quick debe usarse junta.

--Disparadores

Exportar desencadenadores al mismo tiempo.

Esta opción está habilitada de forma predeterminada y se deshabilitará cuando se use --skip-triggers.

Consulte el manual para obtener detalles sobre otros parámetros. Normalmente uso el siguiente SQL para realizar copias de seguridad de las tablas MyISAM:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr "

--default-character-set=utf8 --opt --extended-insert=false"

--triggers -R --hex-blob -x nombre_bd > nombre_bd. sql

Utilice el siguiente SQL para realizar una copia de seguridad de la tabla Innodb:

/usr/local/mysql/bin/ mysqldump -uyejr -pyejr "

-- default-character-set=utf8 --opt --extended-insert=false"

--triggers -R --hex-blob --single-transaction db_name > db_name.sql

Además, si desea habilitar la copia de seguridad en línea, puede usar el parámetro --master-data de la siguiente manera:

/usr/local/mysql/bin/mysqldump -uyejr -pyejr "

-- default-character-set=utf8 --opt --master-data=1"

--transacción única --flush-logs db_name > db_name.sql

Simplemente Al principio, se solicita bloquear la tabla, luego se actualiza el binlog y luego se agrega una declaración CHANGE MASTER al archivo exportado para especificar la ubicación del binlog actualmente respaldado si lo desea. Para restaurar este archivo a un archivo subordinado, puede hacerlo de esta manera.

1.2 Restaurar

El archivo respaldado con mysqldump es un script SQL que se puede importar directamente. Hay dos formas de importar datos.

Utilice el cliente mysql directamente

Por ejemplo:

/usr/local/mysql/bin/mysql -uyejr -pyejr db_name < db_name.sql

Utilice la sintaxis SOURCE (¡¡¡el experimento no tuvo éxito!!!)

En realidad, esta no es una sintaxis SQL estándar, sino una característica proporcionada por el cliente mysql, por ejemplo:

SOURCE /tmp/db_name.sql;

Aquí, debe especificar la ruta absoluta del archivo, y el archivo debe ser un archivo en el que el usuario del tiempo de ejecución de mysqld (por ejemplo, nadie) tenga permiso. para leer.