Copia de seguridad y recuperación de la base de datos mysql

 1. La importancia de la copia de seguridad de los datos

 2. Clasificación y estrategia de copia de seguridad de la base de datos.

2.1 Clasificación de la copia de seguridad de la base de datos 

1) Copia de seguridad física

2) Copia de seguridad lógica

2.2 Estrategia de copia de seguridad de la base de datos 

2.3 Métodos comunes de copia de seguridad

 3. Copia de seguridad completa de MySQL

3.1 ¿Qué es una copia de seguridad completa?

3.2 Ventajas y desventajas de la copia de seguridad completa

3.3 Método de copia de seguridad completa

1) Copia de seguridad y recuperación física en frío

2) copia de seguridad y recuperación de mysqldump

 4. Operaciones completas de copia de seguridad y restauración

 4.1 Copia de seguridad física en frío

(1) Copia de seguridad completa 

(2) Recuperación de datos 

(3) Migración de datos 

4.2 Métodos comunes para la copia de seguridad y la recuperación lógicas completas

1) Utilice la herramienta xtrabackup

2) LVM

3)cp + tomas

4) mysqlhotcopy

5) Utilice la replicación maestro-esclavo mysql

4.3 Uso de la herramienta de copia de seguridad lógica mysqldump

(1) Copia de seguridad completa de una o más bibliotecas completas

(2) Realice una copia de seguridad completa de todas las bibliotecas en el servidor MySQL (incluidas todas las tablas de la biblioteca) 

(3) Copia de seguridad completa de algunas tablas en la biblioteca especificada 

 (4) Ver el archivo sql de copia de seguridad

(5) Restaurar toda la biblioteca de la base de datos

(6) Restaurar las tablas en la base de datos

 5. Copia de seguridad y recuperación incrementales

 5.1 Copia de seguridad incremental

(1) Razones para la copia de seguridad incremental 

(2) El proceso de copia de seguridad incremental 

(3) El método de copia de seguridad incremental

 (4) Operación de copia de seguridad incremental

(5) Copia de seguridad incremental para operaciones de recuperación de datos 

 5.2 Cómo recuperar datos de una copia de seguridad incremental

(1) Restauración basada en puntos de ubicación 

(2) Método de recuperación de un punto en el tiempo

 6. Script de copia de seguridad de la base de datos para recuperación completa más recuperación incremental

 (1) Escritura de secuencias de comandos de copia de seguridad incremental

(2) Script de respaldo completo 

(3) Agregue los dos guiones escritos a las tareas programadas 

 1. La importancia de la copia de seguridad de datos
     El objetivo principal de la copia de seguridad es la recuperación ante desastres.

En un entorno de producción, la seguridad de los datos es primordial.

Cualquier pérdida de datos puede tener graves consecuencias.

Razones para la pérdida de datos:

Errores de programa, errores humanos, errores de operación, fallas de disco, desastres (como incendios, terremotos) y robo.
 

 2. Clasificación y estrategia de copia de seguridad de la base de datos
2.1 Clasificación de la copia de seguridad de la base de datos 
1)
Copia de seguridad física Copia de seguridad física: copia de seguridad de archivos físicos (como archivos de datos, archivos de registro, etc.) del sistema operativo de la base de datos.

Método de copia de seguridad física:

Copia de seguridad en frío (copia de seguridad fuera de línea): se realiza cuando la base de datos está cerrada
Copia de seguridad en caliente (copia de seguridad en línea): la base de datos se está ejecutando, según el archivo de registro de la base de datos Copia de seguridad
en caliente: el estado de la tabla bloqueada de la base de datos (no se puede escribir pero sí )
2) Copia de seguridad lógica
Copia de seguridad lógica: Copia de seguridad de los componentes lógicos de la base de datos (como los objetos de la base de datos, como las tablas).

Es decir, la biblioteca, la estructura de la tabla y los datos de la tabla se guardan en forma de instrucciones SQL.
2.2 Estrategia de copia de seguridad de la base de datos 
Copia de seguridad completa (full backup): copia de seguridad completa de la base de datos cada vez.
Copia de seguridad diferencial: realiza una copia de seguridad de los archivos que se han modificado desde la última copia de seguridad completa.
Copia de seguridad incremental: solo se realizará una copia de seguridad de los archivos que se hayan modificado desde la última copia de seguridad completa o incremental.
 

2.3 Métodos comunes de copia de seguridad
Copia de seguridad física en frío: (copia de seguridad completa)

La base de datos se cierra durante la copia de seguridad y los archivos de la base de datos se empaquetan directamente.
La velocidad de la copia de seguridad es rápida y la recuperación también es la más sencilla.
Herramientas especiales de copia de seguridad mydump o mysqlhotcopy (copia de seguridad completa, copia de seguridad lógica)

Mysqldump es una herramienta de copia de seguridad lógica de uso común (exportada como secuencia de comandos sql)
mysqlhotcopy solo tiene copias de seguridad de tablas MyISAM y ARCHIVE
Habilita registros binarios para copia de seguridad incremental (copia de seguridad incremental)

Para la copia de seguridad incremental, debe actualizar el registro binario
Copia de seguridad de herramientas de terceros

Software gratuito de copia de seguridad en caliente de MySQL Percona XtraBackup
(herramienta de Aliyun: dts, admite migración en caliente)

 3. Copia de seguridad completa de MySQL
3.1 ¿Qué es una copia de seguridad completa? Una
copia de seguridad completa es una copia de seguridad de toda la base de datos, la estructura de la base de datos y la estructura de archivos. Guarda
la base de datos en el momento en que se completa la copia de seguridad.
Es la base para la copia de seguridad diferencial y copia de seguridad incremental
3.2 Ventajas y desventajas de la copia de seguridad completa
Ventajas:

Las operaciones de copia de seguridad y restauración son sencillas y prácticas
Desventajas:

Hay mucha duplicación de largoesrecuperacióntiempoel
ocupando mucho espacio de copia de seguridad,,datos la herramienta de copia de seguridad integrada de MySQL, que puede realizar fácilmente la copia de seguridad de MySQL . biblioteca y tabla como secuencia de comandos SQL y use el comando mysq| para importar los datos respaldados  4. Complete la operación de copia de seguridad y recuperación  4.1 Copia de seguridad física en frío (1)   Sistema de copia de seguridad completactl detener mysqld #Apague el servicio primero  mkdir /backup/ #Crear un directorio de respaldo  rpm  -q xz #Use la herramienta xz para comprimir, verifique si la herramienta xz está instalada  yum install xz -y #Si no está instalada, primero puede instalar yum   cd /usr/local/mysql/  tar Jcf /backup /mysql_all_$(date +%F).tar.xz data #Archivos de base de datos del paquete. /usr/local/mysql/data es el directorio de almacenamiento para los archivos de la base de datos




















tar tf mysql_all_2022-10-25.tar.xz 


(2) Recuperación de datos 
y eliminación de la base de datos: 

 Operaciones para la recuperación completa:

cd /copia de seguridad/
tar Jxf mysql_all_2022-10-25.tar.xz -C /opt/
mv /opt/data/ /usr/local/mysql/


Abra el servicio de base de datos e inicie sesión:

(3) Migración de datos   #Host
 A, use el comando scp para transferir el paquete tar a otro host  B  ##  systemctl detener mysqld #Cerrar mysql  cd /opt/  mkdir /opt/bak/ #Crear un directorio de copia de seguridad                    tar Jxf mysql_all_2022-10-25.tar.xz -C /opt/bak/ #Descomprimir el paquete tar en el directorio de copia de seguridad  cd / opt/bak/ #Cambiar al directorio de descompresión del paquete tar  \cp -af usr/local/mysql/data/ /usr/local/mysql #Copiar el directorio de datos al directorio /usr/local/mysql/ y sobrescriba el archivo original  systemctl  start mysqld #Inicie mysql  mysql -u root -p #Inicie sesión en la base de datos para ver  las bases de datos;













 

      

  

4.2 Métodos comunes de respaldo lógico completo y recuperación
mysqldump es una herramienta de respaldo lógico de uso común.

mysqldump puede exportar bibliotecas y tablas específicas como scripts SQL.

1) Utilice la herramienta xtrabackup,
que es una herramienta de código abierto para realizar copias de seguridad de bases de datos MySQL.

caracteristica principal:

Copia de seguridad en caliente en línea. Se puede realizar una copia de seguridad de Innodb y myisam. Innodb aplica principalmente el principio de recuperación. myisam copia archivos directamente.
Se admite la copia de seguridad de transmisión. Se puede realizar una copia de seguridad en disco, cinta y host remoto. --stream=tar ./ ​​| ssh user@remotehost cat ">" /backup/dir/ admite copias de seguridad incrementales. Las copias de seguridad incrementales se pueden realizar utilizando lsn y el directorio de copia de seguridad base.
Admite la grabación del registro maestro y la información de posición del maestro en el esclavo.
 Admite copias de seguridad activas simultáneas de varios procesos y la estabilidad de xtrabackup es bastante buena. 2) Características de
LVM : modo de espera en caliente, compatibilidad con todos los motores de almacenamiento basados ​​en disco local, copias de seguridad rápidas, gastos generales reducidos, integridad fácil de mantener, recuperación rápida, etc.

3) cp + tar
utiliza el método de copiar directamente el archivo de la base de datos para la copia de seguridad del paquete. Cabe señalar que los pasos de ejecución son: bloquear la tabla, hacer una copia de seguridad y desvincular la tabla.

La restauración también es muy simple, simplemente copie directamente al directorio de almacenamiento del archivo de base de datos anterior.

Nota: Para las tablas del motor de Innodb, también necesita hacer una copia de seguridad de los archivos de registro, es decir, los archivos ib_logfile*. Porque cuando la tabla Innodb está dañada, puede confiar en estos archivos de registro para recuperarse.

4) mysqlhotcopy
mysqlhotcopy es un programa perl que utiliza tablas de bloqueo, tablas de descarga y cp o scp para hacer una copia de seguridad rápida de la base de datos.

Es la forma más rápida de hacer una copia de seguridad de una base de datos o de una sola tabla, pero solo puede ejecutarse en la máquina donde se encuentran los archivos de la base de datos (incluidos los archivos de tabla de datos, los archivos de datos y los archivos de índice).

mysqlhotcopy solo se puede usar para hacer una copia de seguridad de MyISAM.

5) Uso de la replicación maestro-esclavo mysql
La replicación mysql se refiere a transferir las operaciones DDL y DML de la base de datos maestra al servidor esclavo a través de archivos binarios (bin-log), y luego volver a ejecutar estos registros en el servidor esclavo, de modo que los datos se mantiene la sincronización entre el servidor esclavo y el servidor maestro.
 

4.3 Uso de la herramienta mysqldump de copia de seguridad lógica
(1) Realice una copia de seguridad completa de una o más bases de datos completas
mysqldump -uroot -p[contraseña] --databases nombre de base de datos 1 [nombre de base de datos 2].. >/ruta de copia de seguridad/nombre de archivo de copia de seguridad.sql # La exportación es el archivo de script de la base de datos.


(2) Realice una copia de seguridad completa de todas las bibliotecas en el servidor MySQL (incluidas todas las tablas de la biblioteca) 
 mysqldump -u root -p[contraseña] --todas las bases de datos > / ruta de copia de seguridad/nombre del archivo de copia de seguridad.sql
 

(3) Realice una copia de seguridad completa de algunas tablas en la biblioteca especificada 
 mysqldump -u root -p [contraseña] [-d] nombre de biblioteca nombre de tabla 1 [nombre de tabla 2] ... > /ruta de copia de seguridad/nombre de archivo de copia de seguridad.sql #use Opción "
-d", que indica que solo se guarda la estructura de la tabla de la base de datos
 #No utilice la opción "-d", que indica que también se realiza una copia de seguridad de los datos de la tabla


 (4) Ver el archivo sql de copia de seguridad
 cd /opt/sql_bak
 nombre de archivo cat | grep -v "^--" | grep -v "^/" |grep -v "^$"
 o
  nombre de archivo cat | egrep -v " ^--|^/|^$"


(5) Restaurar toda la biblioteca de la base de datos
Eliminar la biblioteca: 

 mysql -u root -p < /opt/sql_bak/test.sql #Redireccionar archivo de biblioteca de entrada
 mysql
 -u root -p -e 'MOSTRAR BASES DE DATOS' #Verificar qué bases de datos están disponibles actualmente
 

(6) Restaurar la tabla en la base de datos
Eliminar la tabla: 

 #Redirigir para importar el archivo de copia de seguridad, se debe especificar el nombre de la biblioteca y la biblioteca de destino debe existir, si no hay una biblioteca, la biblioteca se debe compilar
 mysql -u root -p test < /opt/sql_bak/info_info2.sql   
 

 5. Copia de seguridad y recuperación incremental
 5.1 Copia de seguridad incremental
 

(1) El motivo de la copia de seguridad incremental 
es el problema de usar mysqldump para una copia de seguridad completa

Hay datos duplicados en los datos de copia de seguridad
El tiempo de copia de seguridad y el tiempo de recuperación son demasiado largos
¿Qué es la copia de seguridad incremental?

Es el archivo o contenido agregado/modificado desde la última copia de seguridad
Las características de la copia de seguridad incremental

No hay datos duplicados, la cantidad de copia de seguridad no es grande y el tiempo es corto.
La restauración requiere la última copia de seguridad completa y todas las copias de seguridad incrementales después de la copia de seguridad completa para restaurar, y todas las copias de seguridad incrementales deben revertirse una por una.
 

(2) El proceso de copia de seguridad incremental 
MySQL no proporciona un método de copia de seguridad incremental directo

La copia de seguridad incremental se puede realizar indirectamente a través del registro binario proporcionado por MySQL

Importancia del registro binario de MySQL para la copia de seguridad

El registro binario guarda todas las operaciones que actualizan o pueden actualizar la base de datos.
El registro binario comienza a grabar después de iniciar el servidor MySQL y recrea un nuevo archivo de registro una vez que el archivo alcanza el tamaño establecido por max_binlog_size o recibe el comando de vaciado de registros. Solo necesita para ejecutar vaciar registros
regularmente El método recrea un nuevo registro, genera una secuencia de archivos binarios y guarda estos registros en un lugar seguro a tiempo para completar una copia de seguridad incremental por un período de tiempo (3) Método de copia de seguridad incremental
Recuperación
general

Restauración de todo el contenido de registro binario respaldado
según la ubicación

La base de datos puede tener operaciones incorrectas y operaciones correctas en un momento determinado.
La operación incorrecta se puede omitir según la ubicación precisa
y restaurar según el momento.

Omita un cierto punto en el tiempo cuando ocurre un error para lograr la recuperación de datos
 (4) La operación de copia de seguridad incremental
 necesita modificar el archivo de configuración principal antes de la copia de seguridad incremental:

 vim /etc/my.cnf
 [mysqld]
 log-bin=mysql-bin #Habilitar registro binario. Si usa una ruta relativa, guárdela en el directorio /usr/local/mysql/data/
 binlog_format = MIXED #Opcional, especifique el formato de registro del registro binario (binlog) como MIXED
 server-id = 1
 systemctl
 restart mysqld
 ls -l /usr/local/mysql/data/mysql-bin.*
 
 

El registro binario (binlog) tiene 3 formatos de registro diferentes:

 DECLARACIÓN (basado en la declaración SQL), FILA (basado en la fila), MIXTO (modo mixto), el formato predeterminado DECLARACIÓN
 DECLARACIÓN (basado en la declaración SQL): registre la declaración sql modificada. En el caso de alta concurrencia, puede haber errores en el orden de las sentencias SQL para grabar operaciones, resultando en pérdida de datos o errores al restaurar datos. La eficiencia es alta, pero los datos pueden tener errores.
 ROW (basado en filas): registre cada fila de datos, preciso, pero ineficiente al restaurar.
 ​ MIXTO (modo mixto): use STATEMENT en circunstancias normales y cambie de forma inteligente a ROW en condiciones de alta simultaneidad. ​insertar
en valores de información (8, 'Xiaolan', 'mujer', 22, 'Wuhan', 'Me gusta escuchar "Chicken You Are Too Beautiful"'); insertar en valores de información (9, 'Xiaolan',
' mujer', 22,'Sichuan','Me gusta escuchar "Hey Hey Hey"');
 
 mysqladmin -u root -p flush-logs #Actualizar un nuevo archivo binario
 

 mysqlbinlog --no-defaults --base64-output=decode-rows -v mysql-bin.000001
 ​#
 --base64-output=decode-rows: use el mecanismo de codificación de 64 bits para decodificar y leer por fila
 #-v: mostrar detalles
 
 

#Cree una nueva carpeta como el directorio donde se guarda el archivo de copia de seguridad binario
 
mkdir -p /opt/sql_bak
 
#Mueva el archivo de copia de seguridad binario recién generado a un nuevo directorio (forma más segura: copiar) y modifíquelo por el tiempo nombrándolo
 mv /usr/local/mysql/data/mysql-bin.000001 /opt/sql_bak/info_sql_`date +%Y%m%d`
 

(5) Copia de seguridad incremental para operaciones de recuperación de datos 
 

borrar de info donde id=8 ;
borrar de info donde id=9 ;


 

Realice una restauración incremental: 

mysqlbinlog --sin valores predeterminados /opt/sql_bak/info_sql_20221027 | mysql -u raíz -p


 

 5.2 Cómo recuperar datos de una copia de seguridad incremental
 

(1) Restauración basada en puntos de ubicación 
 

 #Iniciar la recuperación desde un punto determinado hasta el final del registro
mysqlbinlog --no-defaults --start-position='position point' file name | mysql -u root -p
 
 ​#Recuperar
 desde el principio del registro hasta un determinado position Terminar mysqlbinlog antes del punto
 --no-defaults --stop-position='punto de posición' nombre de archivo | mysql -u root -p ​#Comienza
 
 
 desde el punto especificado hasta el final del punto especificado
 mysqlbinlog --no-defaults --start- position='xxx'--stop-position='punto de posición' nombre de archivo | mysql -u root -p  
 
 

 1) Reanudar desde el punto de inicio hasta el final

mysqlbinlog --no-defaults --start-position=4 mysql-bin.000002 |mysql -u raíz -p 


 

2) Desde el punto especificado hasta el final especificado 

mysqlbinlog --no-defaults --start-position=1513 --stop-position=1800 mysql-bin.000003 |mysql -u root -p 
 

(2) Método de recuperación de un punto en el tiempo
 

 #Recuperación desde un momento determinado hasta el final del registro
 mysqlbinlog --no-defaults --start-datetime='punto en el tiempo' nombre de archivo | mysql -u root -p
 
 ​#Recuperación
desde el principio del registro hasta en un momento determinado Terminar mysqlbinlog antes del punto
 --no-defaults --stop-datetime='punto en el tiempo' nombre del archivo | mysql -u root -p
 
 ​#Recuperarse
desde un cierto punto en el tiempo, y finalizar 
mysqlbinlog antes de un cierto punto en time --no -defaults --start-datetime='punto de tiempo de inicio' --stop-datetime'punto de tiempo de finalización' nombre de archivo | mysql -u root -p
 
 

 6. Las ventajas de la combinación de secuencias de comandos de copia de seguridad de la base de datos de recuperación completa y recuperación incremental
: la copia de seguridad completa y la copia de seguridad incompleta tienen sus propias ventajas, y la mayoría de las empresas usarán copia de seguridad completa + copia de seguridad incremental para la copia de seguridad de la base de datos Copia de seguridad completa: disco Ocupa mucho, pero la operación es fácil y sin errores. Copia de seguridad incremental: El disco ocupa una pequeña cantidad y se puede utilizar para copias de seguridad a corto plazo, sin embargo, una vez que se tienen todas las copias de seguridad incrementales, la dificultad de la operación será mucho mayor y propensa a errores.

Diseño de Requerimientos: Una empresa ha lanzado un negocio, la tabla de información es la tabla de datos centrales, por esta razón, la tabla será respaldada durante el tiempo en línea del negocio. Se requiere una copia de seguridad completa todos los martes a las 2:30 a. m. (hora de mantenimiento) y se realiza una copia de seguridad incremental todos los días a la 1:00 a. m.

 (1) Escritura de secuencias de comandos de copia de seguridad incremental
 

#!/bin/bash
logs_path="/opt/sql_bak"
[ -d $logs_path ] || mkdir -p $logs_path
/usr/local/mysql/bin/mysqladmin -u root -pabc123 flush-logs
lastlogs=`sed -n '$p' /usr/local/mysql/data/mysql-bin.index | awk -F '/' '{imprimir $2}'`
mv /usr/local/mysql/data/$lastlogs /opt/sql_bak/binlog_`date +%Y%m%d`
 

(2) Script de respaldo completo 
 

#!/bin/bash
home_path="/opt/sql_bak/backup_sql"
[ -d $home_path ] || mkdir -p /opt/sql_bak/backup_sql
/usr/local/mysql/bin/mysqldump -u root -pabc123 prueba información > /$home_path/infos_$(date +%Y%m%d).sql /usr/local
/ mysql/bin/mysqldump -u root -pabc123 --databases test > /$home_path/tests_$(date +%Y%m%d).sql
 

(3) Agregue los dos scripts escritos a las tareas programadas 
crontab -e
00 1 * * * /opt/addbak.sh
30 2 * * 2 /opt/backup.sh

Supongo que te gusta

Origin blog.csdn.net/zl965230/article/details/130625514
Recomendado
Clasificación