帮助中心/最新通知

质量为本、客户为根、勇于拼搏、务实创新

< 返回文章列表

【服务器相关】数据恢复之Centos7实现MySQL的日志还原恢复数据

发表时间:2025-06-16 03:46:00 小编:主机乐-Yutio

简介

Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基于GTID的二进制文件还原数据

前期准备

准备一台Centos7虚拟机,关闭防火墙和selinux,配置IP地址,同步系统时间,安装MySQL数据库

传统二进制日志还原数据

修改配置文件

基于GTID二进制日志还原数据

修改配置文件


[root@localhost ~]# vi /etc/my.cnfserver-id=1log-bin=binloggtid_mode=ONenforce_gtid_consistency=truelog_slave_updates=1#重启数据库服务[root@localhost ~]# systemctl restart mysqld

操作数据库


mysql> create database mydb1;
mysql> use mydb1;
Database changed
mysql> create table t1(id int)engine=innodb charset=utf8mb4;
mysql> insert into t1 values(1);
mysql> insert into t1 values(2);
mysql> insert into t1 values(3);
mysql> insert into t1 values(11);
mysql> insert into t1 values(12);
mysql> commit;
mysql> select * from t1;
+——+
| id|
+——+
|1 |
|2 |
|3 |
|11 |
|12 |
+——+
5 rows in set (0.00 sec)
mysql> drop database mydb1;

查看二进制日志信息


mysql> show master status\G;
*************************** 1. row ***************************
File: binlog.000003
Position: 1944
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: 51d3db57-bf69-11ea-976c-000c2911a022:1-8
1 row in set (0.00 sec)

mysql> show binlog events in ‘binlog.000003′;
+—————+——+—————-+———–+————-+——————————————————————-+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+—————+——+—————-+———–+————-+——————————————————————-+
| binlog.000003 | 154 | Gtid| 1 | 219 | SET @@SESSION.GTID_NEXT= ’51d3db57-bf69-11ea-976c-000c2911a022:1′ |
| binlog.000003 | 219 | Query | 1 | 316 | create database mydb1 |
| binlog.000003 | 1784 | Gtid| 1 |1849 | SET @@SESSION.GTID_NEXT= ’51d3db57-bf69-11ea-976c-000c2911a022:8’ |
| binlog.000003 | 1849 | Query | 1 |1944 | drop database mydb1|
+—————+——+—————-+———–+————-+——————————————————————-+

另存为二进制日志信息


#8号事务记录为删除数据库,因此只需恢复1-7号事务记录即可[root@localhost ~]# mysqlbinlog --skip-gtids --include-gtids='51d3db57-bf69-11ea-976c-000c2911a022:1-7' /var/lib/mysql/binlog.000003 > /tmp/gtid.sql

参数说明:
–include-gtids:包含事务
–exclude-gtids:排除事务
–skip-gtids:跳过事务

恢复数据


mysql> set sql_log_bin=0;
mysql> source /tmp/gtid.sql
mysql> set sql_log_bin=1;

查看数据恢复情况


mysql> show databases;
+——————–+
| Database|
+——————–+
| information_schema |
| mydb|
| mydb1 |
| mysql |
| performance_schema |
| sys|
+——————–+
6 rows in set (0.00 sec)

mysql> use mydb1;
Database changed
mysql> select * from t1;
+——+
| id|
+——+
|1 |
|2 |
|3 |
|11 |
|12 |
+——+
5 rows in set (0.00 sec)


联系我们
返回顶部