MySQL日志-二进制日志(Binlog)

发布时间:2020-08-08 08:07:22 作者:yangi1314
来源:ITPUB博客 阅读:108

MySQL有下面几个不同的日志文件,可以帮助你找出mysqld内部发生的事情:

日志文件

记入文件中的信息类型

错误日志(-log-err)

记录启动、运行或停止mysqld时出现的问题。

查询日志(-log)

记录建立的客户端连接和执行的语句。

更新日志(-log-update)

记录更改数据的语句。不赞成使用该日志。

二进制日志(-log-bin)

记录所有更改数据的语句。还用于复制。

慢日志(-log-slow-queries)

记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。


在mysql的安装目录下,打开my.cnf,在后面加上上面的参数,保存后重启mysql服务就行了。  
例如: 
  
   log-error= d:/mysql/log/log-error.log
   #log=......
   #log-slow-queries=......
   #log-update=......
   #log-bin=......
         
上面只开启了错误日志,要开其他的日志就把前面的“#”去掉并设置日志格式及目录。

下面重点介绍一下二进制日志(binlog)

二进制以一种更有效的格式,并且是事务安全的方式包含更新日志中可用的所有信息。

包含关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句。
下面介绍一下和二进制日志(binlog)相关的一些操作。

1、是否启用了日志
ON为启用
mysql>   show variables like 'log_bin';

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

| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+

2、查看二进制日志
2.1、查看所有二进制日志列表
mysql> show binary logs;
+---------------+-----------+
| Log_name      | File_size |
+---------------+-----------+
| binlog.000001 |      2036 |
| binlog.000002 |       143 |
| binlog.000003 |       143 |
| binlog.000004 |       143 |
| binlog.000005 |       143 |
| binlog.000006 |       120 |
+---------------+-----------+

2.2、查看正在使用的二进制日志状态信息
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000006 |      120 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+

3、查看binlog日志的大小
mysql> show variables like 'max_binlog_size';
+-----------------+------------+
| Variable_name   | Value      |
+-----------------+------------+
| max_binlog_size | 1073741824 |
+-----------------+------------+

4、删除binlog日志
删除binlog日志有以下几种方式:
4.1、设置expire_logs_days 参数
expire_logs_days 参数表示二进制日志自动删除的天数。默认值为0,表示“没有自动删除”。
mysql> show variables like 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 0     |
+------------------+-------+
可以使用下列方式修改expire_logs_days参数值。
mysql> set global expire_logs_days=5;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'expire_logs_days';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| expire_logs_days | 5     |
+------------------+-------+

4.2、删除全部二进制日志
使用RESET MASTER;命令可以删除全部binlog。
mysql> RESET MASTER;

4.3、使用PURGE MASTER LOGS
PURGE {MASTER | BINARY} LOGS TO 'log_name'
PURGE {MASTER | BINARY} LOGS BEFORE 'date'
用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。
例如:
PURGE MASTER LOGS TO 'binlog.000003';
PURGE MASTER LOGS BEFORE '2016-04-02 22:46:26';
BEFORE变量的date自变量可以为'YYYY-MM-DD hh:mm:ss'格式。MASTER和BINARY是同义词。

5、查看二进制文件的内容
查看二进制文件的内容用mysqlbinlog
[root@mysql1 log]# mysqlbinlog binlog.000001 |more
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#160426 13:44:42 server id 1  end_log_pos 120   Start: binlog v 4, server v 5.6.30-log created 160426 13:44:42 at startup
ROLLBACK/*!*/;
BINLOG '
SgAfVw8BAAAAdAAAAHgAAAAAAAQANS42LjMwLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABKAB9XEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAZhk
qys=
'/*!*/;
# at 120
。。。。。。。。。。。。。。。。。。。。。。。。。。。
-----日志里面能看到你对数据库做的更改操作,比如下面是我的日志里面其中一个操作。
use `test2`/*!*/;
SET TIMESTAMP=1461649838/*!*/;
insert into t values(1,'2016-04-27')#
/*!*/;
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

推荐阅读:
  1. MySQL二进制日志
  2. 如何使用MySQL二进制日志

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

binlog mysql 二进制

上一篇:vsphere数据中心网络规划实践

下一篇:Redo Transport Compression in a Data Guard Environment (文档 ID 729551.1)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》