MySQL基于日志还原数据
简介
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基于日志还原数据相关推荐
- MySQL 基于MyCAT配置数据分片
目录 MySQL 基于MyCAT配置数据分片 相关概念 分库/分表 垂直分割 水平分割 MyCAT介绍 软件介绍 分片规则 工作过程 部署MyCAT服务 环境部署 拓部结构 IP规划 部署MyCAT服 ...
- 根据mysql数据库日志恢复删除数据
根据mysql数据库日志恢复删除数据 BINLOG就是一个记录SQL语句的过程,和普通的LOG一样.不过只是她是二进制存储,普通的是十进制存储罢了. 1.配置文件里要写的东西: [mysqld] lo ...
- mysql重做日志恢复数据_MySQL中重做日志,回滚日志,以及二进制日志的简单总结...
MySQL中有六种日志文件, 分别是:重做日志(redo log).回滚日志(undo log).二进制日志(binlog).错误日志(errorlog).慢查询日志(slow query log). ...
- 云服务器mysql备份与还原数据库命令详解
备份数据库 mysqldump -u root -p -databases db1 db2 > dbbak.sql 备份全部数据库的数据和结构 mysqldump -uroot -p123456 ...
- mysql通过日志恢复数据_mysql通过binlog日志来恢复数据
简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通 ...
- MySQL binlog日志恢复数据详细操作步骤
场景 遇到后台数据批量误删,需要进行数据恢复. 准备 1.确定需要恢复数据的时间段 2.查看是否开启了binlog (1)终端执行命令,连接mysql mysql -h地址 -P端口号 -u账号 -p ...
- mysql根据idb还原数据_mysql通过idb文件,恢复数据库
原因: 由于一次未知原因,服务器停机后,导致数据库不能启动,由于刚接手项目,对此数据库的配置不是那么清晰,分析了很多,最后还是没发正常启动.由于发现数据idb文件还在,最后就采取了险招,重新安装mys ...
- mysql 重做日志 镜像_mysql重做日志 - osc_vr7hvjd2的个人空间 - OSCHINA - 中文开源技术交流社区...
一.重做日志(redo log) 1.作用 确保事务的持久性. 防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性. 2 ...
- Mysql基于binlog日志恢复数据
Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的 ...
最新文章
- oracle数据定义语句,oracle(sql)基础篇系列(3)——数据维护语句、数据定义语句、伪列...
- ESD二极管 DW3.3-2PLC-S 封装SO-8 电压3.3V
- C ++定义QML类型
- AntD 可编辑行表格
- 蛮力法在求解最优解问题中的应用(JAVA)--旅行家问题、背包问题、分配问题
- 2020中国社交电商消费者购物行为研究报告
- linux启动流程——initrd和initramfs
- Chrome/360极速/猎豹/枫树/浏览器去除视频网站广告利器插件——【切糕】广告视频屏蔽专家下载...
- nexus+7+android+5.0++wifi+代理,谷歌Nexus5吃上安卓8.0:除了WiFi全不能正常工作
- [问题2014S07] 复旦高等代数II(13级)每周一题(第七教学周)
- IP地址子网掩码位数换算方法及解释子网掩码的作用
- C++ 字符串 C#解析后 两个字符串无法连接
- 【Tensorflow踩过的坑儿】pb转pbtxt
- PyTorch基础:Tensor的自动广播机制与向量化
- Type mismatch: inferred type is MainActivity but FlutterEngine was expected
- 弄它!!!理论加实验,小小ISIS分分钟拿下!!
- 应用层: HTTP 与 HTTPS协议
- Android 源码 Camera2 预览流程分析一
- 在c语言程序中,数组名做函数调用的实参时,传递给形参的是,若用数组名作为函数调用时的实参,则实际上传递给的形参的是(C)...
- 关于使用X/Y/Z的方式加载地图Tile瓦片的知识总结
热门文章
- 用html页面制作开关,利用前端基础制作html开关图标
- 利用ajax防止session过期,AJAX实现防止Session过期
- @configuration注解_Spring注解@Configuration
- opengl开启垂直同步_玩游戏卡顿?只要简单2步,开启电脑最大性能,速度提升10倍!...
- Linux内核源代码分析——可执行文件header处理(二进制文件读写范例,写DUL工具入门指引)...
- linux 运行库 编译参数,Linux/CentOS 升级C基本运行库CLIBC的注意事项(当想解决GLIBC_2.x找不到的编译问题)...
- java循环取出word table表格中所有的值
- 关于英特尔物联网你不可不知的10个最新动向
- sharepoint 2013/2010/2007 复制工具:SharePoint Content Deployment Wizard
- 原生js滚动到底部加载数据和下拉刷新 Scrollload