La herramienta mysqldump para copia de seguridad y recuperación de MySQL (1)

1. El tipo de
copia de seguridad Copia de seguridad en frío: cierre los datos, detenga el negocio.
Copia de seguridad en caliente: bloquee la copia de seguridad.
Copia de seguridad en caliente: copia de seguridad primero, que no afectará el funcionamiento normal.

2. Método de
copia de seguridad Copia de seguridad lógica: copia de seguridad basada en declaraciones SQL
(1) creación de base de datos mysqldump, creación de tablas, inserción de datos
(2) basada en registros binarios: todas las operaciones de cambios de base de datos
(3) copia de seguridad basada en replicación: registro binario en tiempo real Transferir a otra máquina y restaurar
la copia de seguridad física
(1) xtrabackup para la copia de seguridad física
(2) copiar archivos de datos (copia de seguridad en frío)

3. Herramientas de respaldo
(1) mysqldump
mysql viene con una herramienta lógica de respaldo muy útil
(2) mysqlbinlog
realiza el comando ecológico original de binlog backup
(3)
una herramienta de respaldo físico de alto rendimiento desarrollada por xtrabackup precona

4.
Ventajas de utilizar la herramienta de copia de seguridad mysqldump : Las herramientas de copia de seguridad lógica son todas declaraciones SQL, todas en formato de texto, que es fácil de ver y editar, y es más fácil de comprimir.
Desventajas: eficiencia de copia de seguridad lenta

Parámetros comunes de mysqldump: -u -p -h -S -P
(1) Copia de seguridad completa de la base de datos
-A,
ejemplo:
mysqldump -uroot -p123 -A> /backup/full.sql

(2)
Ejemplo de copia de seguridad de una sola base de datos :
mysqldump -uroot -p123 -B lufei> /backup/lufei.sql
mysqldump -uroot -p123 lufei> /backup/lufei1.sql
Nota: -B, agregar base de datos (crear) y "usar Declaración de "Biblioteca", al restaurar en el futuro, no es necesario crear manualmente la biblioteca y usarla
sin agregar -B. Cuando necesite restaurar, cree la biblioteca primero y luego restaure en la biblioteca de uso.

Además, la opción -B también se puede implementar para respaldar varias bibliotecas al mismo tiempo y respaldarlas en el mismo archivo
mysqldump -uroot -p123 -B lufei oldboy> /backup/lufei_oldboy.sql

En el siguiente ejemplo, si no agrega -B a la copia de seguridad, su función es hacer una copia de seguridad de la tabla
oldboy mysqldump -uroot -p123 lufei oldboy> /backup/lufei_oldboy.sql (mysqldump biblioteca 1 tabla 1 tabla 2 tabla 3> biblioteca 1 .sql)

*** Ejemplo de entorno de producción: mysqldump -uroot -p123 -A -R --triggers> /backup/full.sql
-R, copia de seguridad de procedimientos almacenados y datos de función
--triggers, datos de activación de copia de seguridad

-F, --flush-logs Vaciar el registro binlog, para facilitar el punto de partida cuando el registro binario sea interceptado en el futuro

mysqldump -uroot -p123 -A -F> /backup/full.sql

--master-data = {1 | 2} le dice la ubicación del binlog en el momento de la copia de seguridad, generalmente elegimos usar 2 para registrar la ubicación del registro binario en forma de comentarios

Bloquear tabla: adecuado para todos los motores (myisam, innodb) // Este tipo de copia de seguridad en caliente no es adecuado para grandes entornos comerciales de datos concurrentes. Este método es generalmente para myisam table
-x, --lock-all-tables
-l, - mesas de bloqueo

- transacción única para copia de seguridad en caliente del motor innodb y copia de seguridad en caliente para la tabla myisam; de hecho, la copia de seguridad en caliente se realiza a través de una instantánea

*** Ejemplo de sitio real, copia de seguridad comprimida:
mysqldump -uroot -p123 -A -R --triggers --master-data = 2 --single-transaction | gzip> / backup / all _ $ (date +% F) .sql .gz


La recuperación de la copia de seguridad de mysqldump
utiliza el comando source para recuperar:
mysql> set sql_log_bin = 0; // Recuerde cerrar temporalmente el registro binario antes de la recuperación
mysql> source /opt/xxx.sql;


Entorno de fondo:
sistema de sitio web en ejecución, base de datos mysql, volumen de datos 25G, incremento comercial diario de 10-15M.
Método de respaldo:
todos los días a las 23:00, la tarea programada llama a mysqldump para ejecutar el script de respaldo completo
Hora de falla:
10 am,
¿cómo restaurar una tabla que fue eliminada por error ?

Ideas:
1. Desconectar el negocio para evitar daños secundarios a la base de datos, colgar la página de mantenimiento
2. Crear una biblioteca de respaldo y restaurar todo el equipo
3. Interceptar los registros binarios desde las 23:00 de anoche hasta las 10 am antes de la operación de eliminación accidental
4. Restaurar a la base de datos en espera, verificar la disponibilidad e integridad de los datos
5. Dos soluciones para restaurar aplicaciones de front-end

    5.1 备用库导出误删除的表,导入到生产库,开启业务
    5.2 直接将应用切割到备用库,替代生产库,开启业务

Simular falla y restaurar:
1. Datos originales:
mysql> crear base de datos oldboy;
mysql> usar oldboy
mysql> crear tabla t1 (id int, nombre varchar (20));
mysql> insertar en valores t1 (1, 'zhang3');
mysql> insertar en valores t1 (2, 'li4');
mysql> insertar en valores t1 (3, 'wang5');
mysql> commit;
2.
MySqldump -A -R completamente preparado a las 23:00 el día antes de la simulación dispara --master-data = 2 --single-transaction | gzip> / backup / all _ $ (fecha +% F) .sql.gz

3. Simular la modificación de datos durante el día (23: 00-10: 00) negocio
mysql> insertar en valores t1 (4, 'zhang33');
mysql> insertar en valores t1 (5, 'li44');
mysql> insertar en valores t1 (6, 'wang54');
mysql> commit;
4.
Tabla de caída de fallos de simulación t1;

5. Recuperación
(1) Prepárese para la copia de seguridad completa y obtenga el punto de inicio de la intercepción de binlog en el archivo de copia de seguridad

gunzip all_2018-04-04.sql.gz
- CAMBIAR MAESTRO A MASTER_LOG_FILE = 'my-bin.000004', MASTER_LOG_POS = 731;
(2) Interceptar registro binario
mysqlbinlog --start-position = 731 --stop-position = 1126 /data/binlog/my-bin.000004> /backup/binlog.sql

mostrar eventos binlog en 'my-bin.000004'; ----》 La posición antes de la caída es 1126

(3) Recuperar todo el equipo + binlog // Recuerde, cuando recupere datos, ¡debe cerrar temporalmente el registro binario! ! !

establecer sql_log_Bin = 0;
fuente /backup/all_2018-04-04.sql;
fuente /backup/binlog.sql

Supongo que te gusta

Origin blog.51cto.com/tangyong/2547069
Recomendado
Clasificación