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. js原型,继承

    javascript是为了成为轻量级的语言而开发的.开发者并没有选择像其他面向对象的语言一样,定义类(class),而是使用了protopype实现继承. 每一个函数在创建时,都会创建它的Protot ...

  2. 一 MySQL的架构与历史1.1--1.4

    1.1 MySQL逻辑架构 最上层的服务并不是 MySQL 所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构.比如连接处理.授权认证.安全等等. 第二层架构是MySQL比较有意思的 ...

  3. docker 可视化平台Portainer搭建

    1.部署步骤 docker pull portainer/portainer docker run -d -p 9001:9000 \--restart=always \-v /var/run/doc ...

  4. CSS3选择器nth-child(n)

    CSS3选择器nth-child(n)实现隔几行选择元素 nth-child(n),n 可以是数字.关键词或公式.选择器匹配属于其父元素的第N个子元素,不论元素的类型. 序号写法:li:nth-chi ...

  5. Win10家庭版安装docker desktop

    1.开启Hyper-V在桌面新建hyperv.cmd文件,内容如下: pushd "%~dp0" dir /b %SystemRoot%\servicing\Packages\*H ...

  6. Grafana + Prometheus 监控 Zookeeper

    废话不多说,前几篇已经相应的介绍Grafana 跟 Prometheus,如有不清楚,请参考: https://www.cnblogs.com/zgz21/p/12054518.html https: ...

  7. node-sass低版本与高版本的node会有兼容性问题,导致安装失败

    node版本v14.18.1 node-sass版本v4.13.0 Python 2.7.18

  8. Java基础——二维数组

    package com.zhao.demo; public class Demo08 { public static void main(String[] args) { //二维数组 int[][] ...

  9. MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER

    1. 排名分类 1.1 区别RANK,DENSE_RANK和ROW_NUMBER RANK并列跳跃排名,并列即相同的值,相同的值保留重复名次,遇到下一个不同值时,跳跃到总共的排名. DENSE_RAN ...

  10. vue v-for 循环中,下拉框 el select 设置初始值 v-model

    效果图: 2.解决思路是,v-model 赋值 单独创建一个数组,然后用于接收下拉框的值,然后提交的时候,将这个数组的值,放到提交的数组中. 3.参考: 解决v-for中遍历多个el-select时, ...