binlog的三种模式

  1. statement:记录每一条修改数据的sql
  2. row:保存哪条记录被修改
  3. mixed:兼顾前两者的优点。
# 查看binlog有没有开启
SHOW VARIABLES LIKE 'log_bin%';
# 查看当前binlog的模式
SHOW VARIABLES LIKE 'binlog%';

在配置文件中添加一行:binlog_format="ROW",即可设置成row模式,其他模式同理

-- 查看当前是在哪个日志文件中
SHOW MASTER STATUS;
# 截断日志文件,重新定向到新的日志文件中
# 每次操作binlog恢复前,都需要执行下此命令,能够保证之前的日志文件不会再有新的日志在到这个文件中,影响恢复。
FLUSH LOGS;
# 查询出这些日志文件保存的路径
show variables like '%datadir%';
# get所有的操作记录
SHOW BINLOG EVENTS IN 'mysql-bin.000001';
cd /var/lib/mysql
# get这个binlog文件所有的操作记录, 有详细时间
mysqlbinlog --no-defaults mysql-bin.000001
# get某个区间的操作记录
mysqlbinlog --no-defaults --start-position=120 --stop-position=220226 mysql-bin.000001
# 在后面加管道符|mysql -uroot -p,用这个区间的操作记录去恢复到数据库
mysqlbinlog --no-defaults --start-position=120 --stop-position=220226 mysql-bin.000001 ||mysql -uroot -p
mysqlbinlog --stop-datetime="2022-2-26 20:17:33" mysql-bin.000001 |mysql -uroot -p
mysqlbinlog --start-datetime="2022-2-25 20:17:00" --stop-datetime="2022-2-26 20:17:33" mysql-bin.0000* |mysql -uroot -p

注意事项

  1. 每次重启mysql服务都会创建一个新的binlog文件
  2. FLUSH LOGS;也会创建一个新的binlog
  3. 恢复之前建议FLUSH LOGS;生成一个新的binlog,把恢复操作都写到新的binlog中。
  4. 恢复的过程中可能遇到主键冲突,可能是有binlog记录了mysql的一些自带数据的创建,应该找好恢复的开始位置,别把mysql数据的创建记录也恢复了。
  5. 去找这些binlog,以自己数据库的创建position开始,一个个binlog去恢复,直到最近被删除前的位置。
  6. 建议以位置position或者整个binglog文件恢复。当然也可以mysql-bin.0000*匹配所有binlog然后指定--start-datetime--stop-datetime去恢复。
  7. position的选取,取SHOW BINLOG EVENTS IN 'mysql-bin.000001';结果的End_log_pos列的值。

清空binlog

先用navicat导出一份数据,

删除数据库,

然后清空binlog文件

cd /var/lib/mysql
rm -f mysql-bin.0000*
:> mysql-bin.index

重启mysql

systemctl restart mysql

用navicat导入数据,

查看binlog日志

SHOW BINLOG EVENTS IN 'mysql-bin.000001';

生成新的binlog

FLUSH LOGS;

MySQL使用bin-log将数据恢复到某个时间点的更多相关文章

  1. MySQL通过bin log日志恢复数据|手撕MySQL|对线面试官

    关注微信公众号[程序员白泽],进入白泽的知识分享星球 前言 作为<手撕MySQL>系列的第二篇文章,今天介绍一下MySQL的二进制日志(bin log),注意不要和MySQL的InnoDB ...

  2. 转-->>mysql的bin log

    binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日 ...

  3. 谈谈MySQL bin log的写入机制、以及线上的参数是如何配置的

    目录 一.binlog 的高速缓存 二.刷盘机制 三.推荐的策略 推荐阅读 问个问题吧!为什么你需要了解binlog的落盘机制呢? 我来回答一下: ​ 上一篇文章提到了生产环境中你可以使用binlog ...

  4. mysql之 redo log

    重做日志(redo log) 前言:之前一直弄不清楚 mysql 里面 bin log 和 innodb log 文件的区别,在脑子里面一直有个疑问 binlog 日志文件已经可以用来进行数据库的日志 ...

  5. MySQL日志系统bin log、redo log和undo log

    MySQL日志系统bin log.redo log和undo log   今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...

  6. 深入学习MySQL 02 日志系统:bin log,redo log,undo log

    上一篇文章中,我们了解了一条查询语句的执行过程,按理说这篇应该讲一条更新语句的执行过程,但这个过程比较复杂,涉及到了好几个日志与事物,所以先梳理一下3个重要的日志,bin log(归档日志).redo ...

  7. MySql 关闭 bin 和 log 日志

    mysql 的 bin 和 .log 日志文件会非常占用磁盘空间和 IO,修改 mysql 配置文件可以关闭这两种日志的记录. 关闭 bin 日志,将下面三项配置注释掉: #log_bin = mys ...

  8. mysql数据库误删除后的数据恢复操作说明

    在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...

  9. redo log和bin log

    讲redolog和binlog之前,先要讲一下一条mysql语句的执行过程. 1.client的写请求到达连接器,连接器负责管理连接.验证权限: 2.然后是分析器,负责复习语法,如果这条语句有执行过, ...

  10. 转-MySQL 数据库误删除后的数据恢复操作说明

    在日常运维工作中,对于mysql数据库的备份是至关重要的!数据库对于网站的重要性使得我们对mysql数据的管理不容有失!然后,是人总难免会犯错误,说不定哪天大脑短路了来个误操作把数据库给删除了,怎么办 ...

随机推荐

  1. java 基本知识点

    多线程 加载器 数据结构 内存模型 gc算法

  2. C++ 函数类型和函数指针类型的自动推导、声明和赋值

    1.函数类型推导 #include <iostream> bool MyComp(int val1, int val2) { return val1 > val2; } int ma ...

  3. HttpClient常用的一些常识

    HttpClient是目前我们通讯组件中最常见的一个Api了吧.至少从我目前接触到与外部系统通讯的话是这样的.下面我将我自己常用的一些知识总结一下. 因为本猿也是边写边总结,有啥不对的还望多多指出. ...

  4. layui 关闭/打开新标签

    setTimeout(function () { //关闭当前页面并跳转到课程列表 var topLayui = parent === self ? layui : top.layui; parent ...

  5. Iframe 默认高度、宽度

    项目中还在使用 Iframe ,一次看代码时发现 Iframe 没有指定高度.宽度,可是在页面上显示的时候却有高度.宽度.想着应该是 Iframe 的默认值,于是写了一个简单的页面,代码如下: 1 & ...

  6. vvv,具名插槽

    <!DOCTYPE html> <html> <head> <script src="a.js"></script> & ...

  7. unity task

    https://blog.csdn.net/weixin_43405845/article/details/105028291

  8. stream-分组两次

    Map<String, Map<String, List<AmazonBalanceCustom>>> amazonBalanceMap = amazonBalan ...

  9. 【论文写作】Vancouver style

    参考文献引用风格之 Vancouver style 需要在引用出使用阿拉伯数字(1,2,3...)标注参考文献序号. 示例: Deep Learning [1]. Reference [1] LeCu ...

  10. Django 知识点总结

    知识点总结 一.URL: 1.在python 正则表达式中,正则表达式命名组的语法是(?P<name>pattern),其中命名组中的命名就是name,并且pattern 是某些匹配的模式 ...