简介
Binlog日志,即二进制日志文件,用于记录用户对数据库操作的SQL语句信息,当发生数据误删除的时候我们可以通过binlog日志来还原已经删除的数据,还原数据的方法分为传统二进制文件还原数据和基于GTID的二进制文件还原数据
前期准备
准备一台Centos7虚拟机,关闭防火墙和selinux,配置IP地址,同步系统时间,安装MySQL数据库
修改配置文件
?
1
2
3
4
5
6 |
[root@localhost ~] # vi /etc/my.cnf
server- id =1
log-bin=binlog
#重启数据库服务
[root@localhost ~] # systemctl restart mysqld |
操作数据库
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
mysql> create database mydb charset utf8mb4;
mysql> use mydb;
mysql> create table test(id int )engine=innodb charset=utf8mb4;
mysql> insert into test values (1);
mysql> insert into test values (2);
mysql> insert into test values (3);
mysql> insert into test values (4);
mysql> commit ;
mysql> update test set id=10 where id=4;
mysql> commit ;
mysql> select * from test;
+ ------+
| id |
+ ------+
| 1 |
| 2 |
| 3 |
| 10 |
+ ------+
4 rows in set (0.00 sec)
mysql> drop database mydb; |
查看二进制日志信息
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
mysql> show master status\\G;
*************************** 1. row ***************************
File: binlog.000001
Position: 1960
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
#查找创库和删库的点,为219和1868
mysql> show binlog events in 'binlog.000001' ;
+ ---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+ ---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+
| binlog.000001 | 219 | Query | 1 | 329 | create database mydb charset utf8mb4 |
| binlog.000001 | 1868 | Query | 1 | 1960 | drop database mydb |
+ ---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+ |
另存为二进制日志信息
?
1 |
[root@localhost ~] # mysqlbinlog --start-position=219 --stop-position=1868 /var/lib/mysql/binlog.000001 > /tmp/binlog.sql |
恢复数据
?
1
2
3
4
5
6 |
#临时关闭二进制日志记录以免重复记录
mysql> set sql_log_bin=0;
#恢复数据
mysql> source /tmp/binlog.sql
#重启二进制日志记录
mysql> set sql_log_bin=1; |
查看数据恢复情况
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 |
mysql> show databases;
+ --------------------+
| Database |
+ --------------------+
| information_schema |
| mydb |
| mysql |
| performance_schema |
| sys |
+ --------------------+
5 rows in set (0.00 sec)
mysql> use mydb;
Database changed
mysql> select * from test;
+ ------+
| id |
+ ------+
| 1 |
| 2 |
| 3 |
| 10 |
+ ------+
4 rows in set (0.00 sec)、 |
修改配置文件
?
1
2
3
4
5
6
7
8
9 |
[root@localhost ~] # vi /etc/my.cnf
server- id =1
log-bin=binlog
gtid_mode=ON
enforce_gtid_consistency= true
log_slave_updates=1
#重启数据库服务
[root@localhost ~] # systemctl restart mysqld |
操作数据库
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 |
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; |
查看二进制日志信息
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 |
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 |
+ ---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+ |
另存为二进制日志信息
?
1
2 |
#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:跳过事务
恢复数据
?
1
2
3 |
mysql> set sql_log_bin=0;
mysql> source /tmp/gtid.sql
mysql> set sql_log_bin=1; |
查看数据恢复情况
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 |
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) |
到此这篇关于Centos7实现MySQL基于日志还原数据的示例代码的文章就介绍到这了,更多相关Centos7 MySQL日志还原数据内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!
原文链接:https://blog.51cto.com/14832653/2509121
相关文章
猜你喜欢
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-25 89
-
2025-06-04 41
-
2025-05-29 53
-
2025-05-25 35
-
2025-06-05 55
热门评论