600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > mysql 数据库日志管理工具_mysql mysqlbinlog日志管理工具使用教程

mysql 数据库日志管理工具_mysql mysqlbinlog日志管理工具使用教程

时间:2018-09-30 00:52:01

相关推荐

mysql 数据库日志管理工具_mysql 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 binarylogs;

ERROR1381 (HY000): You are not using binarylogging--或者这样查看

mysql> show variables like '%log_bin%

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

再次查询binlog日志状态:

二. 使用mysqlbinlog查看日志

--先在test表中插入一条数据退出。

mysql> insert into a values('testbinlog');

--查看binlog位置

[root@hsr mysql]# cd/var/lib/mysql

[root@hsr mysql]#lsmysql-bin.000001 mysql-bin.index

2.1使用mysqlbinlog查看日志 不加任何options参数

[root@hsr~]# cd /usr/local/mysql/bin

[root@hsr bin]# ./mysqlbinlog /var/lib/mysql/mysql-bin.000001

上面的日志文件除了创建表和删除表的sql外,操作数据库的语句都加密了。

2.2 使用参数"--base64-output=decode-row -v"查看具体的sql语句,如下命令

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001

上图中 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.000001 -r resultfile

[root@hsr bin]#more resultfile

2.6 加-s 将内容进行简单显示

[root@hsr bin]# ./mysqlbinlog --base64-output=decode-row -v /var/lib/mysql/mysql-bin.000001 -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.000001

--start-datetime='/08/30 09:00:00' --stop-datetime='/08/30 12:00:00'

如上图所示:最后显示的时间截是1535600091, 转换后是-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.000001 --start-position=944

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。