mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)
一.概述
由于服务器生成的二进制日志文件以二进制格式保存,所以如果要想检查这些文件的文本格式,就会用到mysqlbinlog日志管理工具。
mysqlbinlog的语法如下:
mysqlbinlog [options] log-files log-files2...
其中options有很多选项,常用如下:
|
选项 |
说明 |
|
-d, --database=name |
指定数据库名称,只列出指定的数据库相关操作。 |
|
-o, --offset=# |
忽略掉日志中的前n行命令 |
|
-r, --result-file=name |
将输出的文本格式日志输出到指定文件 |
|
-s,--short-form |
显示简单格式,省略掉一些信息 |
|
--set--charset=char-name |
在输出为文本格式时,在文件第一行加上set names char-name. |
|
-- start-datetime=name-stop-datetime=name |
指定日期间隔内的所有日志 |
|
--start-position=# --stop-position=# |
指定位置间隔内的所有日志 |
1.1 开启binlog日志
默认情况下是未打开binlog日志,可以通过以下二种方式查看:
mysql> show binary logs;
ERROR 1381 (HY000): You are not using binary logging
--或者这样查看
mysql> show variables like '%log_bin%

开启binlog日志,修改my.cnf文件重启mysql服务,如下所示:

再次查询binlog日志状态:


二. 使用mysqlbinlog查看日志
--先在test表中插入一条数据退出。
mysql> insert into a values('testbinlog');
-- 查看binlog位置
[root@hsr mysql]# cd /var/lib/mysql
[root@hsr mysql]# ls
mysql-bin. mysql-bin.index
2.1 使用mysqlbinlog查看日志 不加任何options参数
[root@hsr ~]# cd /usr/local/mysql/bin
[root@hsr bin]# ./mysqlbinlog /var/lib/mysql/mysql-bin.

上面的日志文件除了创建表和删除表的sql外,操作数据库的语句都加密了。
2.2 使用参数"--base64-output=decode-row -v"查看具体的sql语句,如下命令
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.

上图中 at 291是插入语句的开始位置, at 384是插入语句的结束位置。如果后续该表数据丢失,可以根据这两个地方执行恢复。也可以根据开始时间和结束时间来恢复,后面再讲日志时具体介绍。
2.3 加-d选项,将只显示对test数据库的操作日志
[root@hsr bin]# ./mysqlbinlog /var/lib/mysql/mysql-bin.000001 -d test
2.4 加-o选项, 忽略掉日志中的前n个操作。演示下
-- 插入三条数据
INSERT INTO a VALUES('testbinlog2')
INSERT INTO a VALUES('testbinlog3')
INSERT INTO a VALUES('testbinlog4') [root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001 -d test -o 14

上图显示日志生成后,从at 898行开始显示。 14个操作代表:日志显示跳过14个at。
2.5 加-r选项
将输出的文本格式日志输出到指定文件,下面将文件结果输出到文件resultfile中。
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin. -r resultfile
[root@hsr bin]# more resultfile


2.6 加-s 将内容进行简单显示
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin. -s

如上图所示,简单显示后,没有了详细的sql语句。
2.7 加"--start-datetime--stop-datetime"显示9:00 ~12:00之间的日志
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.
--start-datetime='2018/08/30 09:00:00' --stop-datetime='2018/08/30 12:00:00'

如上图所示:最后显示的时间截是1535600091, 转换后是2018-08-30 11:34:51。 开始和结束日期可以只写一个。
2.8 加"--start-position=#和--stop-position=#" 和日期范围类似,不过更精确
[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin. --start-position=

最后官网文档 mysqlbinlog
mysql 开发进阶篇系列 33 工具篇(mysqlbinlog日志管理工具)的更多相关文章
- mysqlbinlog(日志管理工具)
mysqlbinlog用于处理二进制的日志文件,如果想要查看这些日志文件的文本内容,就需要使用mysqlbinlog工具. 1.mysqlbinlog命令的语法 shell > mysqlbin ...
- mysql 开发进阶篇系列 47 物理备份与恢复(xtrabackup 的完全备份恢复,恢复后重启失败总结)
一. 完全备份恢复说明 xtrabackup二进制文件有一个xtrabackup --copy-back选项,它将备份复制到服务器的datadir目录下.下面是通过 --target-dir 指定完全 ...
- mysql 开发进阶篇系列 46 物理备份与恢复( xtrabackup的 选项说明,增加备份用户,完全备份案例)
一. xtrabackup 选项说明 在操作xtrabackup备份与恢复之前,先看下该工具的选项,下面记录了xtrabackup二进制文件的部分命令行选项,后期把常用的选项在补上.点击查看xtrab ...
- mysql 开发进阶篇系列 42 逻辑备份与恢复(mysqldump 的完全恢复)
一.概述 在作何数据库里,备份与恢复都是非常重要的.好的备份方法和备份策略将会使得数据库中的数据更加高效和安全.对于DBA来说,进行备份或恢复操作时要考虑的因素大概有如下: (1) 确定要备份的表的存 ...
- mysql 开发进阶篇系列 55 权限与安全(安全事项 )
一. 操作系统层面安全 对于数据库来说,安全很重要,本章将从操作系统和数据库两个层面对mysql的安全问题进行了解. 1. 严格控制操作系统账号和权限 在数据库服务器上要严格控制操作系统的账号和权限, ...
- mysql 开发进阶篇系列 20 MySQL Server(innodb_lock_wait_timeout,innodb_support_xa,innodb _log_*)
1. innodb_lock_wait_timeout mysql 可以自动监测行锁导致的死锁并进行相应的处理,但是对于表锁导致的死锁不能自动监测,所以该参数主要用于,出现类似情况的时候等待指定的时间 ...
- Java程序员须知的七个日志管理工具(转)
Splunk vs. Sumo Logic vs. LogStash vs. GrayLog vs. Loggly vs. PaperTrails vs. Splunk>Storm 英文原文:T ...
- Java程序员须知的七个日志管理工具
本文由 ImportNew - 赖 信涛 翻译自 takipiblog.欢迎加入翻译小组.转载请见文末要求. Splunk vs. Sumo Logic vs. LogStash vs. GrayLo ...
- ABP(现代ASP.NET样板开发框架)系列之8、ABP日志管理
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
随机推荐
- [leetcode]16. 3Sum Closest最接近的三数之和
Given an array nums of n integers and an integer target, find three integers in nums such that the s ...
- [leetcode]29. Divide Two Integers两整数相除
Given two integers dividend and divisor, divide two integers without using multiplication, divisio ...
- ubuntu系统安装微信小程序开发工具
在ubuntu系统中安装微信小程序开发工具之前,先要安装wine与git 一.安装wine 1.如果您的系统是64位,启用32位架构(如果您还没有) sudo dpkg --add-architect ...
- Python下安装MySQLdb模块
----------------------[针对Windows下python 的MySQLdb模块安装]--------------------- 一.检查MySQLdb模块是否安装,可在DOS命令 ...
- Java第三次实验敏捷开发与XP实验
实验三-1 1.实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http: ...
- 分布式协议学习笔记(一) Raft 选举
Raft官网 官方可视化动画1 官方可视化动画2 论文中文翻译 论文英文地址 感觉作为paxos的升级精简版 Raft在设计之初就以容易理解为目标 看完资料 脑海里都有了大概的轮廓. 有了这些详细的资 ...
- Linux使用MentoHust联网线上校园网, 回到普通有线网络却连不上?
我的解决方法如下: 在有线网的设置(Wired Settings)那里, 弹出Network窗口, 点击右下角的设置图标, 选择Security, 然后关掉802.1x Security. 然后就可以 ...
- 用Django ORM实现树状结构
前言 之前看对于用关系数据库实现树状结构的方法就知道一直做自关联的表,但是感觉自关联查询太慢了,最近看到一篇文章,感觉视野开拓了好多,文章:数据库表设计,没有最好只有最适合来自:微信. 下面就针对这里 ...
- MySQL与SQL语句的操作
MySQL与SQL语句的操作 Mysql比较轻量化,企业用的是Oracle,基本的是熟悉对数据库,数据表,字段,记录的更新与修改 1. mysql基本信息 特殊数据库:information_sche ...
- NET Core微服务之路:SkyWalking+SkyApm-dotnet分布式链路追踪系统的分享
对于普通系统或者服务来说,一般通过打日志来进行埋点,然后再通过elk或splunk进行定位及分析问题,更有甚者直接远程服务器,直接操作查看日志,那么,随着业务越来越复杂,企业应用也进入了分布式服务化的 ...