Recuerde un caso de restauración de una base de datos basada en registros binlog en un entorno de producción

Prefacio

8 de marzo de 2021, un hermoso día: el Día de la Mujer, pero hoy eliminé mi biblioteca. Me quedé sin palabras. Experimenté un viaje congestionado de 50 minutos (10 km de distancia) por la mañana, pero no pude detenerme. Los pasos de la eliminación de la base de datos de la empresa se produjo el lunes, ay, no tuve el coraje de huir ...
Inserte la descripción de la imagen aquí
Cerca del tema, para ser honesto, después de darme cuenta de este paso de mi propia operación, primero aclaré la razón para el líder, y luego fue exactamente lo que dijo el líder, dejé que di una iniciación, desperté como un sueño, y cuando bajé, comencé a afilar mi espada y restaurar los datos.

Operación de recuperación

paso 1: Primero restaure con una copia de seguridad de datos completa

Dado que nuestro entorno de producción está respaldado por el script de respaldo de la base de datos (respaldado regularmente todos los días), obtenemos el sql de respaldo y luego lo ejecutamos en el entorno de producción. Inserte la descripción de la imagen aquí
En el servidor de respaldo:

cd /u01/databak/42/202103080400
scp  20210308_040001-wg_wenhai_data.sql.gz 数据库服务器ip:/root/

En el servidor de la base de datos:

gunzip 20210308_040001-wg_wenhai_data.sql.gz

Inicie sesión en mysql para ejecutar:

use wg_wenhai_data
source /root/20210308_040001-wg_wenhai_data.sql

Inserte la descripción de la imagen aquí

paso 2: registro visto en binlog a través de mysqlbinlog

Nota: Basado en la recuperación de binlog, aunque se puede recuperar según el tiempo, también se puede recuperar a través del correspondiente end_log_pos pasado el tiempo, que se mostrará a continuación.

Recuperación en un momento determinado
1) mysqlbinlog ver ubicación detallada

Inserte la descripción de la imagen aquí

mkdir /root/log
mysqlbinlog --base64-output=decode-rows -vvv /u01/mysql/mysqlbinlog/mysql-bin.000155 > /root/log/mysql-bin.000155.log

Inserte la descripción de la imagen aquí

2) El comando basado en la recuperación de tiempo es el siguiente
mkdir /root/log/sql
mysqlbinlog  /u01/mysql/mysqlbinlog/mysql-bin.000155 --start-datetime='2021-03-08  0:00:00' --stop-datetime='2021-03-08  9:40:43' > /root/log/sql/binlog-date.sql

Inserte la descripción de la imagen aquí

Recuperar en función de la identificación de posición del registro binlog
1) mysqlbinlog ver ubicación detallada

Inserte la descripción de la imagen aquí

2) Obtenga el valor de identificación de la posición de acuerdo con el punto de tiempo de recuperación

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
El prerrequisito para la recuperación se basa en el momento de eliminar la base de datos antes de restaurar la base de datos.Como cubrí la base de datos en el anillo de producción, tuve que encontrar la acción de crear la base de datos inicial en el binlog en la base de datos sobrescrita. Esta es la razón por la que se selecciona la identificación de posición, porque el cuadro verde es el comando de inicio de la superposición.

Puede ver que los ID de posición a medianoche y 9:40:43 son 97506871 y 269167350, respectivamente.

mysqlbinlog --start-position=97506871 --stop-position=269167350 /u01/mysql/mysqlbinlog/mysql-bin.000155 > /root/log/sql/binlog.sql

Inserte la descripción de la imagen aquí
Compare las diferencias de archivo entre los dos métodos: Se encuentra que aunque el tamaño del archivo no es completamente el mismo, el número de insertar, actualizar y eliminar es el mismo, por lo que puede realizar la recuperación directamente.
Inserte la descripción de la imagen aquí

paso 3: registro visto en binlog a través de mysqlbinlog

mysql -uusername -ppassword -h127.0.0.1
source /root/log/sql/binlog-date.sql

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44729138/article/details/115251534
Recomendado
Clasificación