mysql-binlog(二)mysqlbinlog命令

一、使用方法

binlog命令可以在终端执行,也可以在数据库可视化工具中执行:

1、终端执行
1.1、 linux

为防止binlog版本不一致,可以在前面加上/usr/local/mysql/bin/mysqlbinlog,如

 /usr/local/mysql-5.7.26/bin/mysqlbinlog mysql-bin.000002
1.2、 windows

我的mysql5.1配置文件在C:\Program Files\MySQL\MySQL Server 5.1下,而数据目录在C:\ProgramData\MySQL\MySQL Server 5.1\data下。binlog日志有两种执行方法: 

(1) mysqlbinlog配置了环境变量,直接使用:

(2) 通过登录mysql使用:

mysql> show binlog events;   #只查看第一个binlog文件的内容
mysql> show binlog events in 'mysql-bin.000002';#查看指定binlog文件的内容
mysql> show binary logs;  #获取binlog文件列表
mysql> show master status; #查看当前正在写入的binlog文件
2、可视化工具中执行

 如navicat

 

二、常用命令

1、读取日志
1.1、直接读取
mysqlbinlog 文件名 >输出文件名

  如:

1.2、指定时间段和数据库读取日志
mysqlbinlog -d crm mysqld-bin.000001

  或者

mysqlbinlog -database crm mysqld-bin.000001

 如查询2022-03-15 09:00:00到2022-03-17 20:00:00 数据库为 test的操作日志,并输出到屏幕上:

mysqlbinlog --no-defaults --database=test --start-datetime="2022-03-15 09:00:00" --stop-datetime="2022-03-17 20:00:00" mysql-bin.000001   |more

输出到文件中

mysqlbinlog --no-defaults --database=test --start-datetime="2022-03-15 09:00:00" --stop-datetime="2022-03-16 20:00:00" mysql-bin.000001    > test0316.txt
1.3、grep根据关键字搜索
#drop关键字 
指定路径/bin/mysqlbinlog  --no-defaults --base64-output=decode-rows -v 指定路径/mysql_log/mysql3306_bin.000012 | grep -i drop

#drop关键字前后各10行
指定路径/bin/mysqlbinlog  --no-defaults --base64-output=decode-rows -v 指定路径/mysql_log/mysql3306_bin.000012 | grep -i  -A 10 -B 10  drop

 (1)grep -A1 keyword filename  找出filename中带有keyword的行,输出中除显示该行外,还显示之后的一行(After 1);

(2) grep -B1 keyword filename

找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(Before 1);

(3)grep -1 keyword filename

找出filename中带有keyword的行,输出中除显示该行外,还显示之前的一行(After 1)和显示之后的一行(After 1);

2、删除binlog文件

注意:binlog文件不可直接删除,否则会导致mysql启动失败,可以通过命令删除。

(1)使用reset master,该命令将会删除所有日志,并让日志文件重新从000001开始。
(2)使用命令

PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }

例如

purge master logs to "mysql-bin.000002" 

将会清空000002之前的所有日志文件.
(3)使用--expire_logs_days=N选项指定过了多少天日志自动过期清空。

3、恢复数据

使用binlog的--start-position=? --stop-position=?命令。

三、常见报错:

1、使用mysqlbinlog命令报错ERROR: Error in Log_event::read_log_event(): 'Sanity check failed', data_len: 31, event_type: 35,原因为版本与数据库版本不匹配导致,如我版本为3.3,使用于mysql5.1的版本,读取mysql5.7的日志会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w_t_y_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值