MySQL a partir del registro binario incrementales para restaurar la base de datos a un lugar determinado

MySQL a partir del registro binario incrementales para restaurar la base de datos a un lugar determinado

1, el principio básico

Todas las operaciones de cada base de datos MySql operación de registro binario tendrá un registro completo en el registro, entonces usted puede encontrar un lugar o momento de errores del operador adecuado cuando de acuerdo a la demanda, ya partir de esta posición mediante la extracción desde el registro proceso, entonces esto hará que la base de datos SQL exportado a cabo una vez más, los datos se restaurará al resultado deseado, este enfoque puede ser implementado para recuperar cualquier lugar o tiempo.
Este modelo es como un paseo en la nieve, al igual que, en cada paso del registro, si no hay un paso o pasos a seguir sus propias expectativas, entonces usted puede encontrar que paso en falso en el registro, y luego la nieve re-pintada plana, no hay huellas, esta vez se puede encontrar por la tala a través de todos los registros que cumplen los deseos de su propio una vez más caminar en la nieve, tan abajo, se puede lograr todo de nuevo ir a la posición antes del error paso, como en la siguiente figura una pieza rectangular de nieve:
Aquí Insertar imagen Descripción
cuando llegamos a la etapa 10, cuando se había encontrado mal, la ubicación está fuera de esta expectativa, este tiempo puede ser re-cubierto de nieve esta nieve , de acuerdo con el registro anterior, una vez más dar los primeros pasos 1 a 9, y luego se puede seguir adelante.

2, la prueba experimental

Aquí instalamos MySQL en CentOS, para hacer una prueba real, en esta prueba, voy a crear una nueva base de datos de prueba, activar el registro binario, añadir una tabla t1 una prueba en la base de datos de prueba, entonces esta vez que hacemos una copia de seguridad completa, y refrescar el registro; a continuación, voy a añadir algunos registros de prueba tabla T1 y hacer un simulacro de borrar todos los registros de mal uso y, por último, voy a utilizar la función de registro, restaurar todos los datos antes de su uso indebido.

2.1 Medio Ambiente y la inicialización

Sistema operativo CentOS 7.2, sistemas de bases de datos: maridb-servidor 5.5.64
base de datos de instalar
yum install MariaDB-servidor MariaDB # instalar el sistema
systemctl mariadb.service inicio # inicio del servicio de base de datos
mysql_secure_installation # iniciar el asistente de inicialización de la base de datos
# Las siguientes opciones de configuración, con el fin de bases de datos de acceso en otros equipos, puede asignar derechos de acceso a la raíz de cualquier host

mysql -uroot #进入数据库
MariaDB [(none)]> grant all on *.* to root@'%' ; #给root用户分配访问权限MariaDB [(none)]> flush privileges; #刷新权限

configuración de base de datos, modificar /etc/my.cnf, activar el registro binario

vi /etc/my.cnf       ##添加如下行
log-bin=cl_bin    ##开启二进制日志功能 
#如下为可选的配置,可配可不配,这里我不配置
#设置日志格式
#binlog_format = mixed
#设置binlog清理时间
#expire_logs_days = 7
#binlog每个日志文件大小max_binlog_size = 100m
#binlog缓存大小
#binlog_cache_size = 4m
#最大binlog缓存大小
#max_binlog_cache_size = 512m
完成以上配置后,重新启动数据库
systemctl restart mariadb.service #启动数据库服务

Crear una prueba de base de datos, y añadir la tabla t1

mysql -uroot #进入数据库
MariaDB [(none)]> show variables like 'log_bin'; 
#查询数据库的二进制功能是否已经开启#如果顺利,应该显示如下的内容:#log_bin       | ON 
#下面创建数据库
MariaDB [(none)]> create database test default charset=utf8;
#下面创建表t1
MariaDB [(none)]> use test;
MariaDB [test]> create table t1(id int not null auto_increment,k varchar(20) default null,v varchar(50) default null , primary key (id)) default charset=utf8;

La finalización de los pasos anteriores, se puede ver en la estructura de datos es el siguiente:
Aquí Insertar imagen Descripción
En esta ocasión, podemos hacer una copia de seguridad completa de la base de datos como punto de referencia para la copia de seguridad más tarde restaurado

mysqldump -uroot test > test_bak_20191227.sql #备份数据库
mysqldump -uroot --all-databases > mysql_bak_20191227.sql #备份全部,以防万一,这里可选操作,与实验相关不大
mysqladmin -uroot flush-logs #刷新数据库日志
#或者以下面的方式刷新数据库日志
mysql -urootMariaDB [test]>flush logs; #刷新日志
MariaDB [test]> show binary logs;#显示日志列表

Cuando la lista de registros, debería ver un nuevo archivo de registro se genera de la siguiente manera cl_bin.000008:
Aquí Insertar imagen Descripción
nos fijamos en el contenido del registro y cl_bin.000008 cl_bin.000007 de
MariaDB [test]> mostrar eventos binlog en 'cl_bin.000008';
Aquí Insertar imagen Descripción
MariaDB [test]> ver eventos binlog en 'cl_bin.000007';
Aquí Insertar imagen Descripción
se puede observar, hemos creado una base de datos que contiene los detalles en, cl_bin.000008 un nuevo registro de los cl_bin.000007 de registro después de una actualización.
Por último, me inserta algunos datos de la base de datos de prueba de la tabla t1

MariaDB [none]> use test; #空表
MariaDB [test]> select * from t1; #空表
MariaDB [test]> insert into t1(k,v) values('test-k-01','test-value-001'); #插入演示数据
MariaDB [test]> insert into t1(k,v) values('test-k-02','test-value-002'); #插入演示数据
MariaDB [test]> insert into t1(k,v) values('test-k-03','test-value-003'); #插入演示数据

2.2 uso indebido

Aquí podemos simular el mal uso

mysql -uroot #进入数据库
MariaDB [test]> delete from t1; #这是一个误操作,清空了t1表的所有数据

Aquí Insertar imagen Descripción

2.2 regreso al anterior uso indebido de datos

La siguiente operación es lograr la totalidad de la tabla de datos antes de la restauración eliminado todos los registros de forma accidental.
El primer paso, vamos a hacer una copia de seguridad completa para restaurar la anterior, donde se puede utilizar una copia de seguridad completa de la base de datos, puede utilizar la prueba de copia de seguridad completa.

mysql -uroot < mysql_bak_20191227.bak #使用数据库全备份#使用test的全备份
mysql -urootMariaDB [(none)]> use test;
MariaDB [test]> source test_bak_20191227.sql

Después de la copia de seguridad completa recuperación, se puede concluir, en este momento de nuestros datos anteriores se inserta en los datos de presentación como en, sólo para completar las estructuras de datos de inicialización, la tabla T1, por supuesto, está vacía.
El segundo paso, las anotaciones de recuperación,
en primer lugar, que se puede ver lo que el contenido más reciente de registro, ese paso para encontrar la ubicación del error.

MariaDB [test]> show binlog events in 'cl_bin.000008';

Aquí Insertar imagen Descripción
Esto marcó el primer paso de la operación rojo 1039, lo que he hecho mal uso, a continuación, a partir de 1039 la extracción de troncos de este registro de posición, y puede volver a introducirse en la base de datos.
Ahora, empecé a extraer el registro ya que las necesidades de registro para ser extraídos, es necesario saber dónde se conecte, ya había dicho elementos de configuración log_bin, que son de configuración cl_bin, es decir en el directorio de datos de MySQL siguiente para cl_bin el nombre del fichero, MySQL directorio de datos, donde es posible mirar a la base de datos
Aquí Insertar imagen Descripción
que hemos visto en el directorio de datos / var / lib / mysql, a continuación, puede entrar en este directorio

cd /var/lib/mysql/
mysqlbinlog --stop-position=1039 cl_bin.000008 > recovery.sql; #这一步最关键,

1039 pasos para extraer el archivo de registro a recovery.sql
Por último, usan este archivo para restaurar los datos recovery.sql

mysql -uroot < recovery.sql;mysql -uroot #再次登录数据库
MariaDB [(none)]> use test; #使用test
MariaDB [test]> select * from t1; #查看结果

Aquí Insertar imagen Descripción

Hemos terminado! ! !

Publicado 48 artículos originales · ganado elogios 3 · Vistas a 20000 +

Supongo que te gusta

Origin blog.csdn.net/chscomfaner/article/details/103729140
Recomendado
Clasificación