先查看下数据库 binlog 的状态

show variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin | OFF |

+---------------+-------+

如果关闭状态的话,需求配置下开启,修改 [windows]my.ini/[linux]my.cnf 文件,linux 下 /etc/my.cnf,在 [mysqld] 下添加 log-bin=[日志名]

log-bin=mysql-bin

重启 mysql,在 centos 下安装的是 mariadb,所以重启:

systemctl mariadb.service restart

然后查看状态,就是 log_bin=on 了。

一次执行一些数据库的操作测试下:

MariaDB [binlog]> create table test( id int auto_increment not null primary key, val int, data varchar(20));

Query OK, 0 rows affected (0.00 sec)

MariaDB [binlog]> insert into test(val, data) values (10, 'wu');

Query OK, 1 row affected (0.01 sec)

MariaDB [binlog]> insert into test(val, data) values (20, 'yang');

Query OK, 1 row affected (0.00 sec)

MariaDB [binlog]> flush logs;

Query OK, 0 rows affected (0.20 sec)

MariaDB [binlog]> insert into test(val, data) values (20, 'ping');

Query OK, 1 row affected (0.01 sec)

MariaDB [binlog]> insert into test(val, data) values (20, 'pinlogng');

Query OK, 1 row affected (0.00 sec)

MariaDB [binlog]> delete from test where id between 4 and 5;

Query OK, 1 row affected (0.00 sec)

MariaDB [binlog]> flush logs;

Query OK, 0 rows affected (0.02 sec)

以下是第一次 flush 之前,和之后的变化

# flush 之前

-rw-rw---- 1 mysql mysql 958 11月 17 10:31 mysql-bin.000001

-rw-rw---- 1 mysql mysql 19 11月 17 10:25 mysql-bin.index

#flush 之后

-rw-rw---- 1 mysql mysql 1001 11月 17 10:32 mysql-bin.000001

-rw-rw---- 1 mysql mysql 245 11月 17 10:32 mysql-bin.000002

-rw-rw---- 1 mysql mysql 38 11月 17 10:32 mysql-bin.index

.index 是索引文件,其他三个是 binlog 文件,我们可以用 [mysqlbinlog] 工具来恢复数据。为了下面讲解的方便,我们先将 binlog 文件解析成 txt 文件,如下:

mysqlbinlog data\mysql-bin.000001 > ./1.txtmysqlbinlog data\mysql-bin.000002 > ./2.txtmysqlbinlog data\mysql-bin.000003 > ./3.txt

重复第一个 log 文件的操作

mysqlbinlog data\mysql-bin.000001 | mysql -uroot -p123456

在第二个 binlog 里面我们进行了 delete 操作,我们并不想将 delete 的操作恢复到数据库,这样我们可以通过读取 2.txt 文件:

................................/*!*/;# at 653#140902 16:07:43 server id 1 end_log_pos 759 Query thread_id=1 exec_time=0 error_code=0SET TIMESTAMP=1409645263/*!*/;delete from test where id between 4 and 5/*!*/;# at 759#140902 16:07:43 server id 1 end_log_pos 786 Xid = 175COMMIT/*!*/;................................

这里介绍下

--start-position=N #设置其实的偏移量

--stop-position=N #设置终止的偏移量

在这个文件中,我们可以看到 DELETE 的操作的起始位置是 653,终止位置是 759.那么我们只要重做第二个日志文件的开头到 653 的操作,然后再从 759 到末尾的操作,我们就可以把数据给恢复回来,而不会 DELETE 数据。所以执行两个命令

mysqlbinlog data\mysql-bin.000002 --stop-pos=653 | mysql -uroot -p123456mysqlbinlog data\mysql-bin.000002 --start-pos=759 | mysql -uroot -p123456mysqlbinlog data\mysql-bin.000003 --stop-pos=587 | mysql -uroot -p123456

mysql binlog使用_mysql binlog 基本使用相关推荐

  1. mysql修改binlog格式_mysql binlog格式...

    项目采用了spring的事务机制,在发布时遇到了问题.后台报了异常. Binary logging not possible. Message: Transaction level 'READ-COM ...

  2. mysql 写binlog 原理_MySQL binlog原理及应用

    01 概述 Binlog它记录了所有的DDL和DML(除了数据查询语句)语句,以事件(EVENT)形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. 一般来说开启二进制日志 ...

  3. mysql 5.7 binlog 压缩_mysql binlog压缩处理

    前一段时间系统mysql压力较大,产生大量binlog,大量的binlog删除后又担心后期出现问题难以调查,保存后又占用本身的空间存储. 每天产生的binlog可以多达5-6G. 因此考虑是否扩容机器 ...

  4. mysql binlog c++_MySQL binlog的格式解析

    我搜集到了一些资料,对理解代码比较有帮助. 在头文件中binlog_event.h中,有描述 class Log_event_header class Log_event_footer 参见[Myst ...

  5. mysql事件类型_MySQL binlog中的事件类型

    MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型. ...

  6. mysql binlog 记录_MYSQL binlog 日志内容查看

    记录mysql数据库真正执行更改的所有操作(DML语句),不包含那些没有修改任何数据的语句,不会记录select和show这样的语句. 二进制日志的作用: 1. 可以完成主从复制的功能 2. 进行恢复 ...

  7. mysql binlog协议_mysql binlog协议分析--具体event

    这几天在修改canal, 连接mysql和maria接收到的event有所区别 拿一个简单的insert sql来举例 mysql 会有以下几个event写入到binlog里 1.ANONYMOUS_ ...

  8. mysql binlog 权限_MySQL如何开启binlog?binlog三种模式的分析

    前提,创建表t,并插入数据,语句如下: CREATE TABLE `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `t_modified` ...

  9. mysql binlog过期策略_MySQL binlog日志优化方案

    Binlog 相关参数及优化策略 我们首先看看Binlog 的相关参数,通过执行如下命令可以获得关于Binlog 的相关参数.当然,其中也显示出了" innodb_locks_unsafe_ ...

最新文章

  1. python多线程读取文件的问题_Python多线程同步---文件读写控制方法
  2. Machine Learning:如何选择机器学习算法?
  3. 几种常见自动化测试框架
  4. jq之toggle()
  5. python海龟编辑器画小汽车_【海龟编辑器下载】海龟编辑器(Python编辑器) v1.3.4 官方免费版-趣致软件园...
  6. cad图纸怎么看懂_CAD图纸太大,打开的时候很卡怎么办?教你如何给图纸瘦身
  7. 苹果逼停微信赞赏功能,最大赢家是...
  8. 没有方案你抱怨;有了方案你会认真看吗?
  9. 使用libyuv对YUV数据进行缩放,旋转,镜像,裁剪等操作
  10. axios get请求中文乱码
  11. NC协议服务器端库登陆失败,NC数据库日常维护
  12. vim:the damn garbled of vim-devicons from nerdtree
  13. 创建asp网站iis发布网站用IP地址进行访问
  14. 小程序camera组件设置前前置摄像头无效
  15. java即时通讯 开源_java开源即时通讯软件服务端openfire源码构建
  16. UltraEdit 应用程序发生错误0xc0000417
  17. 【STM32】入门(零):keil安装、科学使用、芯片包安装
  18. docker容器启动后无法访问宿主机host
  19. SFF-8485-串行GPIO(SGPIO)总线规范
  20. 迁移WSL时的报错:0x80073d21 此应用的发布者不允许将其移动到其他位置

热门文章

  1. 【Elasticsearch】如何使用 Elasticsearch 6.2 搜索中文、日文和韩文文本 - 第 1 部分: 分析工具
  2. 【Elasticsearch】es 7.8.0 唐诗三百首写入 Elasticsearch 会发生什么
  3. 【Kafka】Kafka broker id 解释以及 自动生成id
  4. 20-10-010-安装-kafka_2.11-1.1.0-单节点测试
  5. 【集合】Java 集合的ConcurrentModificationException
  6. flink报错:typeutils.CompositeType$InvalidFieldReferenceException Cannot reference field by field expre
  7. java自定义栈类代码,异常堆栈和自定义类
  8. ModelAndView视图解析器小结
  9. java函数式编程归约reduce概念原理 stream reduce方法详解 reduce三个参数的reduce方法如何使用
  10. Redis Topic说明