MySQL日志之【二进制日志】

一、binlog日志开启与设置

1.log-bin=mysqlbin-log #开启日志 保存路径

2.binlog-do-db=''#设置记录二进制的数据库,空为全部数据库记录

3.show binary logs;  #查看二进制文件

4.show binlog events \G;   #查看二进制binlog内容,操作记录

二 、查看二进制日志

1.导出到文本文档中查看:

 E:\phpstudy\MySQL\bin>mysqlbinlog  ../MySQL_Log/MyLog-bin.000001  > log.sql

2.命令行中查看日志(bin目录下mysqlbinlog)

  bin>  mysqlbinlog  ../MySQL_Log/MyLog-bin.000001

3. mysqlbinlog的常见参数:

 
-d,--database=name :指定数据库名称,只列出指定数据库的操作.
-D, --disable-log-bin :执行恢复的时候,禁止二进制日志.可以防止同一台MySQL加上
     -t时进入死循环 -o,--offset=n :忽略掉日志前n行命令 -r,--result-file=name :将输出日志到指定文件
-R, --read-from-remote-server:从一个MySQL服务器上读取二进制
-s,--short-form :显示简单格式,省略一些信息
-S, --socket=name :socket文件连接path.
-t, --to-last-log :和-R一起使用,在二进制日志结束的时候并不会停止,而是在MySQL服务器最后
      生成的binlog结束,如果输出和输入都在一台MySQL上可能会导致死循环.
--set-charset=char-name :在输出文本格式的时候,在第一行加上set names char-name.
--start-datetime=# --stop-datetime=# :指定输出起始日期的日志.
--start-position=# --stop-position=# :指定起始日志的位置.

三、基于不同方式的恢复

1.基于时间点的回复:

	(Windows环境下)(时间用“”双引号)
     mysqlbinlog  --stop-datetime=”2015-06-02 10:06:20” ../Log/MyLog-bin.000001 | mysql -uroot -p
	(Linux环境下)
     mysqlbinlog  --stop-date='2012-06-05 19:59:59' /var/log/mysql-bin.000001 | mysql -uroot -p

2.基于位置的回复

 1)位置

 开始位置:325 ,结束位置:394

2)恢复

 mysqlbinlog --stop-position='889107' /var/lib/mysql/mysql-bin.000001|mysql -uroot -p 
 mysqlbinlog --start-position='889189' /var/lib/mysql/mysql-bin.000001|mysql -uroot -p 

四、管理(删除)二进制日志

1.purge master logs to 'MyLog-bin.000002 

2.PURGE MASTER LOGS BEFORE ‘20130330’     

 用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志

3. mysql > flush logs;  

(关闭当前的二进制日志文件并创建一个新文件,新的二进制日志文件的名字在当前的二进制文件的编号上加1。)

    mysql > reset master; 

可以删除列于索引文件中的所有二进制日志,把二进制日志索引文件重新设置为空,并创建一个新的二进制日志文件

4.mysql-bin.index是日志的索引文件,记录了日志的最大序号,当执行RESET MASTER命名删除全部日志,新的日志从头开始。

5.expire_logs_days

 此参数是设置日志的过期天数,过期的日志将会被自动删除,这有利于减少我们管理日志的工作量,需要修改my.cnf

 expire_logs_days= 3 //即为日志保存三天,三天之后过期的日志自动删除

6.采用“服务器生成日志”——–“本地保存,分析日志”的模式

   1).通过shell脚本每小时做一次二进制日志flush操作

   2).通过shell脚本每小时进行一次二进制日志的备份工作,将一小时新产生的二进制日志迁移到nfs备份服务器,并压缩存放。

   3).my.cnf配置expire_logs_days = 5,这样mysql会自动删除5天前的日志。

五、命令解释:

1.log-bin定义开启二进制日志;path表明日志文件所在的目录路径;

2.expire_logs_days定义了mysql清除过期日志的时间,即二进制日志自动删除的天数。 默认值为0,表示“没有自动删除“

3.max_binlog_size定义了单个文件的大小限制,如果二进制日志写入的内容大小超出给定值,

日志就会发生滚动(关闭当前文件,重新打开一个新的日志文件),默认值是1GB。

4.SHOW VARIABLES  LIKE ‘%log_%’; 查看日志状态

5.RESET MASTER; 执行该语句,所有二进制日志将被删除,mysql会重新创建二进制日志,新的日志文件扩展名将

重新从000001开始编号。

6.–start-date、–stop-date 可以指定恢复数据库的起始时间点和结束时间点

   –start-position、–stop–position可以指定恢复数据的开始位置和结束位置

原创文章,转载请注明: 转载自HSBLOG

本文链接地址: MySQL日志之【二进制日志】