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 ...
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.
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
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
mkdir /root/log
mysqlbinlog --base64-output=decode-rows -vvv /u01/mysql/mysqlbinlog/mysql-bin.000155 > /root/log/mysql-bin.000155.log
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
Recuperar en función de la identificación de posición del registro binlog
1) mysqlbinlog ver ubicación detallada
2) Obtenga el valor de identificación de la posición de acuerdo con el punto de tiempo de recuperación
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
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.
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