mysql服务日志_MySQL服务日志

一、MySQL服务日志介绍

MySQL日志有下面几种:

错误日志(Error Log)

查询日志(Query Log)

二进制日志(Binary Log)

(一)错误日志

记录MySQL服务进程在启动、关闭或运行过程中遇到的错误信息。它的调整在/data/3306/my.cnf文件中:

...

[mysqld_safe]

log-error=/data/3306/mysql_3306.err #错误日志路径

...

(二)查询日志

查询日志分为:

普通查询日志(general query log)

慢查询日志(slow query log)

1、普通查询日志

记录客户端连接信息和执行的SQL语句信息。对于普通查询日志参数调整查看:

mysql> show variables like 'general_log%';+------------------+-----------------------------------+

| Variable_name | Value |

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

| general_log | OFF |

| general_log_file | /data/3306/data/hadoop-slave1.log |

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

2 rows in set (0.03 sec)

可以看到普通查询日志处于关闭状态,并且存储的位置,当然你可以通过 set global general_log = ON 进行开启。

2、慢查询日志

记录查询时间超过指定值(long_query_time)的SQL语句。对于普通查询日志参数调整查看:

--vim /data/3306/my.cnf

[mysqld]...

long_query_time= 1

log-slow-queries = /data/3306/slow.log...

(三)二进制日志

记录数据被修改的相关信息。参数调整查看:

--查看相关参数

mysql> show variables like '%log_bin%';+---------------------------------+-------+

| Variable_name | Value |

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

| log_bin | ON | --记录binlog

| sql_log_bin | ON | --临时不记录binlog

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

3 rows in set (0.00sec)--开启binlog vim /data/3306/my.cnf...[mysqld]...log-bin = /data/3306/mysql-bin

...

二、二进制日志的三种模式

(一)三种模式介绍

binlog日志有三种模式分别为:

Statement Level模式

Row Level模式

Mixed模式

1、Statement Level模式

将每一条修改数据的sql都会记录到master的binlog中。slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行。

优点:解决了Row Level下的缺点,不需要记录每一行的数据变化,从而减少bin-log日志量,节约IO,提高性能。

缺点:由于记录的是执行语句,所以随着新功能的不断增加,MySQL的复制在某些情况下(如:存储过程、trigger调用)会遇到失败。

2、Row Level模式

记录每一行数据的修改形式,然后slave端再对相同的数据进行修改。

优点:bin-log中不记录执行sql语句的上下文相关信息,仅仅记录哪一条数据被修改了以及修改成什么样了,所以Row Level日志清楚的记录数据修改的细节。而且不会出现上面Statement Level模式复制出现问题的情况(如:存储过程、trigger调用)。

缺点:由于记录的日志比较详细,所以会产生大量的日志文件。

3、Mixed模式

该模式是上面两种模式的结合,在Mixed模式下,MySQL会根据执行的sql来区分对待记录日志的形式。

(二)调整binlog日志模式

1、查看binlog日志模式

mysql> show variables like '%binlog_format%';+---------------+-----------+

| Variable_name | Value |

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

| binlog_format | STATEMENT |

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

1 row in set (0.01 sec)

2、调整binlog日志模式方法

配置文件修改

--vim /data/3306/my.cnf

[mysqld]...

binlog_format=ROW

...

在线修改立即生效

--设置

mysql> set global binlog_format=ROW;

Query OK,0 rows affected (0.00sec)--退出

mysql>quit

Bye--重新登录查看

mysql> show variables like '%binlog_format%';+---------------+-------+

| Variable_name | Value |

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

| binlog_format | ROW |

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

1 row in set (0.00 sec)

不重启修改永久生效

将上面的配置全部设置,配置文件设置和全局变量设置都要设置。

(三)binlog日志模式实践

1、刷新binlog

--出现一个新的binlog文件 mysql-bin.000009

[root@hadoop-slave1 3306]# mysqladmin -uroot -p123456 -S /data/3306/mysql.sock flush-logs

2、操作数据库

mysql>show databases;+--------------------+

| Database |

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

| information_schema |

| crm |

| mysql |

| performance_schema |

| reptest |

| test |

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

6 rows in set (0.02sec)

mysql> usecrm;Databasechanged

mysql>show tables;+---------------+

| Tables_in_crm |

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

| userinfo |

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

1 row in set (0.00sec)

mysql> delete fromuserinfo;

Query OK,4 rows affected (0.04 sec)

3、查看binlog日志

--查看Row Level下的binlog文件

[root@hadoop-slave1 3306]# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000009

--具体日志文件

..

D_F

###DELETE FROM`crm`.`userinfo`

###WHERE###@1=1###@2='张三'###DELETE FROM`crm`.`userinfo`

###WHERE###@1=2###@2='李四'###DELETE FROM`crm`.`userinfo`

###WHERE###@1=3###@2='王五'###DELETE FROM`crm`.`userinfo`

###WHERE###@1=4###@2='赵六'# at300...

可以看到,数据库的更改语句会详细的被记录。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值