MySQL——通过binlog恢复数据
目录
1.binlog基本概念
2.MySQL开启binlog
3.使用binlog日志恢复数据
3.1.恢复前准备工作
3.2.数据恢复
3.2.1.通过mysqlbinlog将binlog转为sql,以方便查询具体位置
3.2.2.查看生成的backuptmp.sql,最终确定需要恢复的起始位置为219,结束位置为982
3.2.3.通过mysqlbinlog执行恢复操作
1.binlog基本概念
二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。
binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE、DROP等)以及表数据修改(INSERT、UPDATE、DELETE、TRUNCATE等)的二进制日志。不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,但可以通过查询通用日志来查看MySQL执行过的所有语句。
binlog有两个常用的使用场景:
- 主从复制:master节点开启binlog,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的(详见MySQL实操(二)——MySQL主从同步实战_醉酒的戈多的博客-CSDN博客)。
- 数据恢复:通过mysqlbinlog工具来恢复数据(本文主要讲解功能)。
2.MySQL开启binlog
MySQL安装完成后,MySQL5.7版本binlog默认不开启,MySQL8默认开启binlog;登录MySQL后,查看binlog状态sql如下:
show variables like '%log_bin%';
如未开启binlog日志,则可按以下步骤开启binlog日志
开启binlog日志
修改MySQL配置文件,linux中配置文件为my.conf,window下问my.ini,下面以centos为例演示
- 编辑配置文件
vim /etc/my.cnf
- 添加配置项
log-bin=mysql-bin
server-id=1
- 重启MySQL服务
systemctl restart mysqld
- 进入MySQL查看binlog日志是否开启成功
log_bin为ON说明这个参数是开启的,就是说系统是记录了bin log的
log_bin_basename配置了bin log的文件路径及文件前缀名
log_bin_index配置了bin log索引文件的路径
- 查看日志列表
show master logs;
- 根据log_bin_basename的路径查看binlog具体文件
3.使用binlog日志恢复数据
原理:当数据库发生变化时,binlog会记录数据库中的所有变化;需要恢复的时候可以根据binlog中的开始位置和结束位置还原本部分操作;结束位置一般是数据被破坏或删除之前的位置。
3.1.恢复前准备工作
开启binlog之后,创建测试数据库,在测试数据库中创建测试表,并写入数据:
create database test;
use test;
CREATE TABLE `testuser` (`id` int(11) NOT NULL,`name` varchar(255) DEFAULT NULL,`age` decimal(18,2) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;insert into `testuser`(`id`,`name`,`age`) values (1,'张三',24.00);
此时假如误删了test数据库,就可以用binlog来进行回复数据库、库中的表及表中的数据;
drop database test;
3.2.数据恢复
当需要恢复数据时,为了防止恢复数据后影响最新业务,需要执行flush logs,产生一个新的binlog文件,此时旧的binlog文件不会再有写入;
下面具体通过mysql-bin.000001来进行数据恢复
恢复时需要在binlog中找到两个位置:
- 数据恢复的起始位置
- 数据恢复的结束位置
如在数据准备中的drop操作,需要在binlog中找到该位置,并将该位置作为数据恢复的结束位置
3.2.1.通过mysqlbinlog将binlog转为sql,以方便查询具体位置
mysqlbinlog --set-charset=utf-8 /var/lib/mysql/mysql-bin.000001>backuptmp.sql
3.2.2.查看生成的backuptmp.sql,最终确定需要恢复的起始位置为219,结束位置为982
3.2.3.通过mysqlbinlog执行恢复操作
mysqlbinlog -v /var/lib/mysql/mysql-bin.000001 --start-position=219 --stop-position=982 | mysql -uroot -p123456
/var/lib/mysql/mysql-bin.000001 要操作binlog文件
--start-position=219 数据恢复的起始位置
--stop-position=982 数据恢复的结束位置
mysql -uroot -p123456 数据恢复需要登录数据库
MySQL——通过binlog恢复数据相关推荐
- Mysql使用binlog恢复数据解决误操作问题的两种方法
Mysql使用binlog恢复数据解决误操作问题的两种方法 参考文章: (1)Mysql使用binlog恢复数据解决误操作问题的两种方法 (2)https://www.cnblogs.com/Data ...
- mysql用binlog恢复数据_利用mysql的binlog恢复数据
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- 不小心删除数据--利用MySQL的binlog恢复数据
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- mysql用binlog恢复数据_mysql 利用 binlog 恢复数据
mysqlbinlog --start-position=301 ..\log-bin\binlog.000001 |mysql -u root -p 123456 这是在从日志的第301行开始恢 ...
- 如何使用mysql binlog 恢复数据
如果想通过 mysql 的 binlog 恢复数据,首先要开启 binlog .这里搭建一个测试的环境,了解一下 mysql binlog 是如何恢复数据库的.原理比较简单,binlog 会存储mys ...
- mysql根据bin log恢复_MySQL 通过 binlog 恢复数据
目的 通过了解 binlog 日志的相关配置,简单掌握通过 binlog 对数据库进行数据恢复操作: mysql 日志文件 任何成熟软件都会有一套成熟的日志系统,当软件出现问题时,这些日志就是查询问题 ...
- mysql8从binlog恢复数据
mysql8从binlog恢复数据 mysqlbinlog官方文档 数据恢复 数据恢复命令 注意 mysqlbinlog官方文档 https://dev.mysql.com/doc/refman/8. ...
- mysql5.7使用binlog 恢复数据的方法
文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 第一步:保证mysql已 ...
- 如何利用MySQL的binlog恢复误删数据库详解
文章来源: 学习通http://www.bdgxy.com/ 目录 1 查看当前数据库内容并备份数据库 2 开启bin_log功能 3 模拟误操作(插入3条数据,删除数据库) 4 数据恢复 5 总结 ...
最新文章
- vivo自带便签新版_原来vivo手机点击这个按钮,还能变成扫描仪,纸质文档一键电子化...
- python manager详解_Python通过Manager方式实现多个无关联进程共享数据
- FPGA中建立时间和保持时间不满足如何解决
- php 上个月天数,php日期所在月的天数_PHP教程
- 「学习笔记——Python」Python 的模块(Modules)
- 解析“60k”大佬的19道C#面试题(下)
- 下找到vue变量_Vue:npm run serve 到底做了什么?
- 【转】使用Mysql-connector-c++插入数据时乱码解决
- java构造器基本语法_Java语言中的定义变量、构造函数
- html用js连接sql,如何从浏览器中的JavaScript连接到SQL Server数据库?
- NVIDIA GeForce GTX 1060 驱动安装--------TensorFlow系列学习笔记(一)
- java小组的队名,霸气小组名称口号大全
- 一进制存在吗?为什么?
- 7.node.js的Buffer(缓冲区)的合并(concat)、比较(compare)、拷贝(copy)和裁剪(slice)以及如何转化为JSON对象
- IDT发布ZEN 或 TAO 双淬灭探针
- 安全攻访策略:PDR模型
- 深度学习入门系列,用白话文的方式让你看得懂学的快(第八章)
- RGB 透明度对应值
- 【HTML】DAY 2
- npm ERR code1
热门文章
- DPDK学习记录11 - 内存初始化4之rte_eal_hugepage_init
- redis事务及实现
- 毕业三年,晋升两次,涨薪三倍,一名普通本科生的职场成长史
- 使用 Python 和 Streamlit 从 Excel 中进行 VLOOKUP
- html页面如何写循环,jquery怎么写循环?
- C语言之回调函数(非常重要)附带回调函数版本实现整型的加减乘除四则运算
- import java.awt.BorderLayout;_AWT BorderLayout
- 用matlab求其零极点,用CZT求解系统函数的零极点:算法说明及MATLAB程序演示
- [Python]Python制作词图云
- VS code 开启Livereload 失败