简介

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

传统二进制日志还原数据

1.修改配置文件[root@localhost ~]# vi /etc/my.cnf
server-id=1
log-bin=binlog#重启数据库服务
[root@localhost ~]# systemctl restart mysqld

2.操作数据库

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;

3.查看二进制日志信息

mysql> show master status\G;
*************************** 1. row ***************************File: binlog.000001Position: 1960Binlog_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                                                 |
+---------------+------+----------------+-----------+-------------+--------------------------------------------------------------------+

4.另存为二进制日志信息

[root@localhost ~]# mysqlbinlog --start-position=219 --stop-position=1868 /var/lib/mysql/binlog.000001 > /tmp/binlog.sql

5.恢复数据

#临时关闭二进制日志记录以免重复记录
mysql> set sql_log_bin=0;
#恢复数据
mysql> source /tmp/binlog.sql
#重启二进制日志记录
mysql> set sql_log_bin=1;

6.查看数据恢复情况

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)、

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

1.修改配置文件

[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

2.操作数据库

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;

3.查看二进制日志信息

mysql> show master status\G;
*************************** 1. row ***************************File: binlog.000003Position: 1944Binlog_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                                               |
+---------------+------+----------------+-----------+-------------+-------------------------------------------------------------------+

4.另存为二进制日志信息

#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:跳过事务

5.恢复数据

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

6.查看数据恢复情况

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)

原创作者: 原创地址:https://blog.51cto.com/14832653/2509121?source=drh

参考链接 :

MySQL基于日志还原数据 : https://mp.weixin.qq.com/s/juX32qyu-k_vX6YrPt5bMA

超简单:Linux环境部署redis https://mp.weixin.qq.com/s/EHBxiFOubuX1fdPCC9IPnw

MySQL基于日志还原数据相关推荐

  1. MySQL 基于MyCAT配置数据分片

    目录 MySQL 基于MyCAT配置数据分片 相关概念 分库/分表 垂直分割 水平分割 MyCAT介绍 软件介绍 分片规则 工作过程 部署MyCAT服务 环境部署 拓部结构 IP规划 部署MyCAT服 ...

  2. 根据mysql数据库日志恢复删除数据

    根据mysql数据库日志恢复删除数据 BINLOG就是一个记录SQL语句的过程,和普通的LOG一样.不过只是她是二进制存储,普通的是十进制存储罢了. 1.配置文件里要写的东西: [mysqld] lo ...

  3. mysql重做日志恢复数据_MySQL中重做日志,回滚日志,以及二进制日志的简单总结...

    MySQL中有六种日志文件, 分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log). ...

  4. 云服务器mysql备份与还原数据库命令详解

    备份数据库 mysqldump -u root -p -databases db1 db2 > dbbak.sql 备份全部数据库的数据和结构 mysqldump -uroot -p123456 ...

  5. mysql通过日志恢复数据_mysql通过binlog日志来恢复数据

    简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通 ...

  6. MySQL binlog日志恢复数据详细操作步骤

    场景 遇到后台数据批量误删,需要进行数据恢复. 准备 1.确定需要恢复数据的时间段 2.查看是否开启了binlog (1)终端执行命令,连接mysql mysql -h地址 -P端口号 -u账号 -p ...

  7. mysql根据idb还原数据_mysql通过idb文件,恢复数据库

    原因: 由于一次未知原因,服务器停机后,导致数据库不能启动,由于刚接手项目,对此数据库的配置不是那么清晰,分析了很多,最后还是没发正常启动.由于发现数据idb文件还在,最后就采取了险招,重新安装mys ...

  8. mysql 重做日志 镜像_mysql重做日志 - osc_vr7hvjd2的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.重做日志(redo log) 1.作用 确保事务的持久性. 防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性. 2 ...

  9. Mysql基于binlog日志恢复数据

    Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的 ...

最新文章

  1. oracle数据定义语句,oracle(sql)基础篇系列(3)——数据维护语句、数据定义语句、伪列...
  2. ESD二极管 DW3.3-2PLC-S 封装SO-8 电压3.3V
  3. C ++定义QML类型
  4. AntD 可编辑行表格
  5. 蛮力法在求解最优解问题中的应用(JAVA)--旅行家问题、背包问题、分配问题
  6. 2020中国社交电商消费者购物行为研究报告
  7. linux启动流程——initrd和initramfs
  8. Chrome/360极速/猎豹/枫树/浏览器去除视频网站广告利器插件——【切糕】广告视频屏蔽专家下载...
  9. nexus+7+android+5.0++wifi+代理,谷歌Nexus5吃上安卓8.0:除了WiFi全不能正常工作
  10. [问题2014S07] 复旦高等代数II(13级)每周一题(第七教学周)
  11. IP地址子网掩码位数换算方法及解释子网掩码的作用
  12. C++ 字符串 C#解析后 两个字符串无法连接
  13. 【Tensorflow踩过的坑儿】pb转pbtxt
  14. PyTorch基础:Tensor的自动广播机制与向量化
  15. Type mismatch: inferred type is MainActivity but FlutterEngine was expected
  16. 弄它!!!理论加实验,小小ISIS分分钟拿下!!
  17. 应用层: HTTP 与 HTTPS协议
  18. Android 源码 Camera2 预览流程分析一
  19. 在c语言程序中,数组名做函数调用的实参时,传递给形参的是,若用数组名作为函数调用时的实参,则实际上传递给的形参的是(C)...
  20. 关于使用X/Y/Z的方式加载地图Tile瓦片的知识总结

热门文章

  1. 用html页面制作开关,利用前端基础制作html开关图标
  2. 利用ajax防止session过期,AJAX实现防止Session过期
  3. @configuration注解_Spring注解@Configuration
  4. opengl开启垂直同步_玩游戏卡顿?只要简单2步,开启电脑最大性能,速度提升10倍!...
  5. Linux内核源代码分析——可执行文件header处理(二进制文件读写范例,写DUL工具入门指引)...
  6. linux 运行库 编译参数,Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)...
  7. java循环取出word table表格中所有的值
  8. 关于英特尔物联网你不可不知的10个最新动向
  9. sharepoint 2013/2010/2007 复制工具:SharePoint Content Deployment Wizard
  10. 原生js滚动到底部加载数据和下拉刷新 Scrollload