MySQL的日志管理

日志类型:
查询日志:query log;
慢查询日志:slow query log;
错误日志:error log;
二进制日志:binary log;
中继日志:reley log;
事务日志:transaction log;

1、查询日志:
记录数据库中的查询操作日志;可以基于文件存储,也可以存储在表中。

查询日志的相关变量:

MariaDB [(none)]> show global variables like "general%";
+------------------+---------+
| Variable_name    | Value   |
+------------------+---------+
| general_log      | OFF     |      //是否开启此功能;
| general_log_file | www.log |    //记录查询操作的文件名,默认为hostname.log;
+------------------+---------+
2 rows in set (0.00 sec)

MariaDB [(none)]> show global variables  like "log_output%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |       //默认查询记录操作记录于文件之中;
+---------------+-------+
1 row in set (0.00 sec)

2、慢查询日志
执行时长超出指定时长的查询操作;这里的"长"是由MySQL服务器变量long_query_time(以秒为单位)定义的。每出现一个慢查询,MySQL服务器就会给它的slow_queries状态计算器加上一个1。用–log-slow-queries[=file_name]选项启动时,mysqld写一个包含所有执行时间超过long_query_time秒的SQL语句的日志文件。该文件默认为主机名加上-slow.log。

功能:慢查询日志可以用来找到执行时间长的查询,可以用来做优化。

查询超时时长;

MariaDB [(none)]> show global variables like "long_query_time";
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |    
+-----------------+-----------+
1 row in set (0.00 sec)

设定查询超时时长:

MariaDB [(none)]> set global long_query_time=5.000000;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 
MariaDB [(none)]> 
MariaDB [(none)]> show global variables like "long_query_time";
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 5.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

查询慢查询日志是否开启:

MariaDB [(none)]> show global variables like "slow_query_log%";
+---------------------+--------------+
| Variable_name       | Value        |
+---------------------+--------------+
| slow_query_log      | OFF          |      //OFF为关闭,ON为开启;
| slow_query_log_file | www-slow.log |   //慢查询日志所记录的文件名;
+---------------------+--------------+
2 rows in set (0.00 sec)

查询是否记录慢查询日志:

MariaDB [(none)]> show global variables like "log_slow_queries%";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| log_slow_queries | OFF   |
+------------------+-------+
1 row in set (0.00 sec)

查询慢查询日志的记录速率:

MariaDB [(none)]> show global variables like "log_slow_rate_limit";
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| log_slow_rate_limit | 1     |     //默认为1秒钟;
+---------------------+-------+
1 row in set (0.00 sec)

查询慢查询日志记录的详细级别:

MariaDB [(none)]> show global variables like "log_slow_verbosity";
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| log_slow_verbosity |       |
+--------------------+-------+
1 row in set (0.00 sec)

3、错误日志
错误日志主要记录mysqld启动和关闭过程中输出的事件信息,还有mysql运行中产生的错误信息;以及event scheduler运行一个event时产生的日志信息;还有在主从复制架构中的从服务器上启动从服务器线程时产生的信息;

查询错误日志的文件路径:

MariaDB [(none)]> show global  variables  like  "log_error";
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| log_error     | /var/log/mariadb/mariadb.log |     //基于yum安装时的默认位置;
+---------------+------------------------------+
1 row in set (0.00 sec)

查询是否记录警告信息至错误日志文件中:

MariaDB [(none)]> show global variables like "log_warnings";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_warnings  | 1     |    //1表示记录,0表示不记录;
+---------------+-------+
1 row in set (0.00 sec)

4、二进制日志
记录导致数据改变或潜在导致数据改变的SQL语句;二进制日志的主要目的是在恢复时能够最大可能的更新数据库,因为二进制日志包含备份后进行的所有更新操作;二进制日志还用于在主服务器上记录所有将发送给从服务器的语句。

二进制日志记录格式:
1)基于“语句”记录;statement
2)基于“行”记录:row
3)混合模式:mixed,让系统自行判断该基于哪种方式进行;

二进制日志文件的构成:
两类文件
1)日志文件:mysql-bin.文件名后缀,二进制格式;
2)索引文件:mysql-bin.index,追踪的可用的二进制文件序列有哪些;

查询是否记录二进制文件:

MariaDB [(none)]> show global variables like "log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_bin       | ON    |
+---------------+-------+
1 row in set (0.00 sec)

MariaDB [(none)]> show global variables like "sql_log_bin";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_log_bin   | ON    |
+---------------+-------+
1 row in set (0.00 sec)

查询二进制文件记录的格式:

MariaDB [(none)]> show global variables like "binlog_format";
+---------------+-----------+
| Variable_name | Value     |
+---------------+-----------+
| binlog_format | STATEMENT |   //默认是基于SQL"语句"记录;
+---------------+-----------+
1 row in set (0.00 sec)

查询二进制日志文件的最大体积:
注意:
1)到达最大值会自动滚动;
2)文件达到上限时的大小未必为指定的精确值;

MariaDB [(none)]> show global variables like "max_binlog_size";
+-----------------+------------+
| Variable_name   | Value      |
+-----------------+------------+
| max_binlog_size | 1073741824 |   //默认为1G;
+-----------------+------------+
1 row in set (0.00 sec)

查询是否启用二进制日志同步功能:

MariaDB [(none)]> show global variables like "sync_binlog";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog   | 0     |
+---------------+-------+
1 row in set (0.00 sec)

mysqlbinlog:客户端命令工具
使用语法:mysqlbinlog [OPTION] log_file
–start-position
–stop-position //指明起始事件序列号来查看文件;

–start-datetime=
–stop-datetime= //指明起始时间来查看二进制文件;
YYYY-MM-DD hh:mm:ss //时间格式;

查看二进制日志内容:

[root@www html]# mysqlbinlog /var/lib/mysql/mysql-bin.000001 
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#190218  8:35:22 server id 1  end_log_pos 245 	Start: binlog v 4, server v 5.5.60-MariaDB created 190218  8:35:22 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
mrRqXA8BAAAA8QAAAPUAAAABAAQANS41LjYwLU1hcmlhREIAbG9nAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACatGpcEzgNAAgAEgAEBAQEEgAA2QAEGggAAAAICAgCAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAASQWUbg==
'/*!*/;
# at 245
#190218  8:35:44 server id 1  end_log_pos 328 	Query	thread_id=2	exec_time=0	error_code=0
SET TIMESTAMP=1550496944/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create database mydb
/*!*/;

文件格式参数解释:

# at 328
#190218  8:36:19 server id 1  end_log_pos 434 	Query	thread_id=2	 error_code=0
use `mydb`/*!*/;
SET TIMESTAMP=1550496979/*!*/;
create table  tb1(id int(20),name char(30))
/*!*/;


第一行:事件起始序列号;
第二行:事件发生的日期和时间; 190218 8:36:19
       事件发生的服务器的标识;server id 1	
       事件的类型:Query
	   时间发生时所在服务器执行此事件的线程的ID:thread_id=1
		语句的时间戳与将其写入二进制文件中的时间差:exec_time=0    //等于0表示没有时差;
		错误代码:error_code=0
之下的内容:事件内容;

5、中继日志
复制架构中,从服务器用于保存主服务器的二进制日志中读取到的事件;

6、事务日志
事务型存储引擎自行管理和使用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值