MySQL 服务器配置与管理<二>

目录

日志

日志简介

⼀般查询⽇志和慢查询⽇志的输出形式 

​编辑 ⼀般查询⽇志

​编辑 慢查询⽇志

​编辑 错误⽇志

二进制日志 

Redo Log 和 Undo Log

服务器⽇志维护

配置⽇志输出位置 

mysql System Schema (mysql系统库)

 在⼀台机器上运⾏多个MySQL实例

日志

日志简介

mysql服务器在运行的过程中会接受到各种请求,执行各种sql语句,记录各种数据,这些操作都会被记录为一个事件,以日志的形式保存到对应的日志文件中

MySQL Server 有以下⼏种⽇志,可以记录服务器正在发⽣的活动
注:
1.默认情况下,除 Windows 上的错误⽇志外,不启⽤任何⽇志,Linux下默认开启错误⽇志和⼆进制⽇志
2.在服务器运⾏期间可以控制⼀般查询和慢查询⽇志的禁⽤与开启,也可以更改⽇志⽂件名
3.⼀般查询⽇志和慢查询⽇志记录可以写⼊⽇志表、⽇志⽂件或两者同时写⼊
4. 默认情况下,所有启⽤的⽇志将写⼊数据⽬录,可以通过刷新⽇志强制服务器关闭并重新打开⽇志 ⽂件
5. 通过 FLUSH LOGS 语句刷新⽇志来强制服务器关闭并重新打开⽇志⽂件,也可以使⽤
mysqladmin的 flush-logs refresh 参数,或mysqldump 的 --flush-logs --master-data 选项
6.中继⽇志仅⽤于主从复制过程中的从服务器

⼀般查询⽇志和慢查询⽇志的输出形式 

如果启⽤⼀般查询⽇志和慢查询⽇志,⽇志的输出⽅式(日志的记录方式)可以指定为⽇志⽂件或 mysql 系统库中的 general_log slow_log 表,也可以两者同时指定
1.启动时的⽇志控制
(1)log_output 系统变量指定⽇志输出的形式,但并不会真正的启⽤⽇志。 log_output 可以有
三个值,分别是: TABLE (表)、 FILE (⽂件)、 NONE (不输出),可以同时指定多个值,并⽤逗号隔开,未指定值时默认是 FILE ,如果列表中存在 NONE 则其他的不⽣效,也就是说 NONE 的优先级最⾼。

(2)通过设置 general_log 系统变量的值来控制⼀般查询⽇志的 开启 1 禁⽤ 0 ,如果要为⽇志指定⾃定义的绝对路径或⽂件名可以使⽤ general_log_file 系统变量
(3) 通过设置 slow_query_log 系统变量的值来控制慢查询⽇志的 开启 1 禁⽤ 0 ,如果要为
⽇志指定⾃定义的绝对路径或⽂件名可以使⽤ slow_query_log_file 系统变量
(4)一般查询日志记录了所有的查询语句,慢查询日志只记录查询时间超时的查询语句,即慢查询日志是一般查询日志的子集
以选项⽂件中的配置为例

示例1:将⼀般查询⽇志写⼊⽇志表和⽇志⽂件

 查询默认的路径

示例2:仅将⼀般查询⽇志和慢查询⽇志写⼊⽇志表

示例3:仅将慢查询⽇志写⼊⽇志⽂件 

示例4:将⼀般查询⽇志和慢查询⽇志写⼊⽇志⽂件,并指定⾃定义的⽇志路径

示例5:将⼀般查询⽇志和慢查询⽇志写⼊⽇志⽂件和日志表,并指定⾃定义的⽇志文件名

重启mysql服务,再查询一下确认修改的内容

2.运⾏时的⽇志控制

(1)在运⾏时修改 log_output 的值,以更改⽇志的输出形式,通过语句控制:

语法:SET [GLOBAL|SESSION] variable_name=value

如:SET GLOBAL log_output=[FILE, TABLE, NONE] 

(2)general_log[={0|1}] slow_query_log[={0|1}] 可以表⽰启⽤和禁⽤⼀

   般查询⽇志和慢查询⽇志

(3)general_log_file slow_query_log_file 表⽰通⽤查询⽇志和慢查询⽇志⽂件名称

(4)只对当前会话禁⽤或启⽤⼀般查询⽇志记录,将 SESSION 作⽤域的 sql_log_off 变量设置

ON OFF。即 SET SESSION sql_log_off =ON | OFF

3.使⽤⽇志表优点

(1) 可以通过 SQL 语句的条件查询过滤⽇志内容(使用where 条件),从⽽选择满⾜特定条件的⽇志记录。⽐如,某个客⼾端的⽇志;

(2)可以通过客⼾端程序连接到服务器并查询表中的⽇志信息,⽆需登录服务器主机访问⽂件系统

(3)⽇志记录具有标准格式,可看⽇志表的结构,可以使⽤以下语句:

SHOW CREATE TABLE mysql.general_log; # ⼀般查询⽇志
SHOW CREATE TABLE mysql.slow_log; # 慢查询⽇志

 ⼀般查询⽇志

General query log - ⼀般查询⽇志,记录客⼾端连接或断开连接的信息,也会记录从客⼾端接收的每个SQL语句。如果开启将会产⽣⼤量的内容,⾮常耗费服务器资源,所以默认为关闭(不开启),要启⽤⼀般查询⽇志可以使⽤:   -- general_log[={0|1}]

默认⽇志⽂件名为 host_name.log ,可以使⽤ general_log_file=file_name 修改; 

记当客⼾端连接的⽇志⾏,使⽤ connection_type 来指⽰⽤于建⽴连接的协议。 TCP/IP
⽰不使⽤SSL建⽴的TCP/IP连接、 SSL/TLS 表⽰使⽤SSL建⽴的TCP/IP连接、 Socket 表⽰
Unix套接字⽂件连接、 Named Pipe 表⽰Windows命名管道连接、 Shared Memory 表⽰
Windows共享内存连接

Mysqld按照接收到SQL语句的顺序将语句写⼊查询⽇志,这个顺序可能与语句执⾏的顺序不同 

查看 General query log 一般查询日志这个表的建表字段

执行的命令为: mysql> SHOW CREATE TABLE mysql.general_log;

 示例:

(1)查看是否开启一般查询日志及输出形式

mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+

mysql> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | OFF   |
+---------------+-------+

(2)通过SQL语句查询日志 

在argument中存的就是记录的SQL语句,但直接看的话是看不懂的,需要使用CAST()函数把编码后的内容转换为可读的字符类型,CAST函数的语法为: CAST(要转换的内容 AS 目标数据类型)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值