zlk管理mysql日志_MYSQL日志管理

我叫张贺,贪财好色。一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛学和跑步。

个人博客:传送阵

笔者微信:zhanghe15069028807

日志

作用

error log错误日志

记录mysql启停错误信息,用于运维排错

general log普通日志

记录客户端查询日志,用于开发

bin log 二进制日志

用于增加备份

slow log 慢查询日志

查询执行速度慢的语句,用于调优

1、错误日志

错误日志是我们运维人员用的最多的日志了,里面记录了数据库启动/关闭时的提示信息,我们可以利用错误日志定位到错误。

1、查看错误日志默认存放的位置

MariaDB [(none)]> show variables like "log_error%";

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

| Variable_name | Value |

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

| log_error | /var/log/mariadb/mariadb.log |

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

1 row in set (0.00 sec)

2、更改错误日志存放的位置并授权

[root@mysql01 ~]# grep error /etc/my.cnf

[mysqld]

log-error=/log/mysql/err.log

[root@mysql01 ~]# mkdir -p /log/mysql ; touch /log/mysql/err.log

[root@mysql01 ~]# chown -R mysql:mysql /log/mysql/err.log

//然后重启数据库

3、查看错误日志常用操作

[root@mysql01 ~]# grep -i "error" /log/mysql/err.log

2、查询日志

查询日志会把所有人对数据库的所有的操作都记录下来,常用于开发测试数据库,运维默认将其关闭,因为一直开着它,会产生大量的无用IO。

1、开启general日志

[root@mysql01 ~]# grep "general" /etc/my.cnf

[mysqld]

general_log=ON

general_log_file=/log/mysql/select.log

2、创建对应的目录与日志文件,并授权

[root@mysql01 ~]# mkdir -p /log/mysql

[root@mysql01 ~]# touch /log/mysql/select.log

[root@mysql01 ~]# chown -R mysql:mysql /log/mysql/select.log

//重启生效

3、查看日志,任何操作都会记录

[root@mysql01 ~]# cat /log/mysql/select.log

/usr/libexec/mysqld, Version: 5.5.64-MariaDB (MariaDB Server). started with:

Tcp port: 0 Unix socket: /var/lib/mysql/mysql.sock

Time Id Command Argument

191122 11:51:28 3 Connectroot@localhost as anonymous on

3 Queryselect @@version_comment limit 1

3 Queryshow databases

3 Quit

4、通过变量查看查询日志的位置与启动

MariaDB [(none)]> show variables like "general_log%";

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

| Variable_name | Value |

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

| general_log | ON |

| general_log_file | /log/mysql/select.log |

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

2 rows in set (0.00 sec)

//临时开启查询日志

MariaDB [(none)]> set global general_log = ON;

Query OK, 0 rows affected (0.00 sec)

//临时关闭查询日志

MariaDB [(none)]> set global general_log = OFF;

Query OK, 0 rows affected (0.00 sec)

3、慢查询日志

慢查询日志用于运维人员定位到执行缓慢的语句,用于数据库的调优。运维能做的仅仅是通过慢查询日志来找出哪些语句比较慢,然后把这语句告诉开发,让开发进行做索引或语句的优化,运维不能擅自改动,因为开发对于业务比较熟悉。数据库语句执行较慢的原因主要有二:

开发水平较低,把能简单操作语句写的很长,很复杂,比较普通内连接能完成的事结果把语句写的很长很复杂

数据量很大导致的速度慢,这种情况就需要建立索引了,但索引最好也是开发进行建立。

1、开启慢查询日志

[root@mysql01 ~]# cat /etc/my.cnf

[mysqld]

slow_query_log = on

slow_query_log_file=/log/mysql/slow.log

long_query_time=2

#log_queries_not_using_indexes #忽略索引,索引做的不好也会查的慢

2、创建对应目录与日志文件,并授权

[root@mysql01 ~]# mkdir -p /log/mysql ; touch /log/mysql/slow.log

[root@mysql01 ~]# chown -R mysql:mysql /log/mysql/slow.log

//重启数据库生效

3、执行过慢语句进行测试

MariaDB [(none)]> select BENCHMARK(500000000,2*3); #6秒

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

| BENCHMARK(500000000,2*3) |

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

| 0 |

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

1 row in set (6.14 sec)

4、检查慢日志是否记录

[root@mysql01 ~]# cat /log/mysql/slow.log

/usr/libexec/mysqld, Version: 5.5.64-MariaDB (MariaDB Server). started with:

Tcp port: 0 Unix socket: /var/lib/mysql/mysql.sock

Time Id Command Argument

# Time: 191122 12:14:20

# User@Host: root[root] @ localhost []

# Thread_id: 2 Schema: QC_hit: No

# Query_time: 6.138377 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1574396060;

select BENCHMARK(500000000,2*3);

4、二进制日志

二进制日志只记录数据被修改的信息,所以二进制日志常用于做数据恢复。

1、开启binLog二进制日志

[root@mysql01 ~]# cat /etc/my.cnf

[mysqld]

server-id = 161

log-bin = /log/mysql/bin/sql_70_161

expire_logs_days = 30 #30天前之前的内容自动删除

mysql> show variables like 'log_bin%'; #查看二进制日志是否开启成功

2、创建对应目录与日志文件,并授权

[root@mysql01 ~]# mkdir -p /log/mysql/bin

[root@mysql01 ~]# touch /log/mysql/bin/sql_70_161

[root@mysql01 ~]# chown -R mysql:mysql /log/mysql/bin

[root@mysql01 ~]# systemctl restart mariadb

3、查看binlog信息

[root@mysql01 ~]# mysqlbinlog -v /log/mysql/bin/sql_70_161.000001

4、日志截断

切割binlog日志

重启数据库或者执行flush logs;

在控制台执行reset master会清空所有binlog(危险)

删除部分binlog日志

MariaDB [(none)]> purge master logs to 'sql_70_161.000003'; #删除指定日志以前的日志文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值