日志分类
- error log:错误日志
- genernal log:普通日志
- binlog:二进制日志
- slow log:慢日志
设置错误日志
配置: 默认位置: log_error=$datddir/hostname.err 看日志: 主要关注 [error],deadlock [root@localhost ~]# # errorlog [root@localhost ~]# # 默认开了,默认位置 datadir=/data/3306/data/hostname.err [root@localhost ~]# # 控制参数 log_error=/data/3306/err.log, 注意: 最好是初始化之前设定好。 [root@localhost ~]# # 注意: 日志和数据分开存储 例如: /mysqllog/3306/mysql-err.log [root@localhost ~]# vim /etc/my.cnf [root@localhost ~]# cat /etc/my.cnf [mysql] socket=/tmp/mysql.sock [mysqld] user=mysql basedir=/usr/local/mysql datadir=/data/3306/data server_id=51 port=3306 socket=/tmp/mysql.sock log_error=/data/3306/log/mysql-err.log
设置错误日志等级
[root@localhost ~]# mkdir -p /data/3306/log/ [root@localhost ~]# chown -r mysql.mysql /data/ [root@localhost ~]# /etc/init.d/mysqld restart shutting down mysql.... [ ok ] starting mysql.2021-11-20t14:58:53.264890z mysqld_safe error: log-error set to '/data/3306/log/mysql-err.log', however file don't exists. create writable for user 'mysql'. the server quit without updating pid file (/data/3306/data/[failed]t.localdomain.pid). [root@localhost ~]# touch /data/3306/log/mysql-err.log [root@localhost ~]# chown -r mysql. /data/ [root@localhost ~]# /etc/init.d/mysqld restart 错误日志: 启动故障 主从故障 死锁 数据库hang,堆栈信息 主要关注: [error] [error] [my-000068] [server] unknown option ---》 配置文件有问题 日志记录级别 mysql> show variables like '%log_error%'; +----------------------------+----------------------------------------+ | variable_name | value | +----------------------------+----------------------------------------+ | binlog_error_action | abort_server | | log_error | /data/3306/log/mysql-err.log | | log_error_services | log_filter_internal; log_sink_internal | | log_error_suppression_list | | | log_error_verbosity | 2 | +----------------------------+----------------------------------------+ 5 rows in set (0.00 sec)

生效时间
mysql> set global log_error_verbosity=3; 下一次登录生效。

二进制日志(binlog)
作用
记录了mysql 发生过的修改的操作的日志。,除了show select ,修改操作都会记录binlog
数据恢复、主从、sql问题排查、审计(工具:binlog2sql my2sql)
配置
- 8.0默认开启binlog
- 默认在datadir binlog.0000001
- 建议日志和数据分开存储,避免磁盘io 抢占。
定义 参数 server_id=111
log_bin=路径/文件名前缀
cat /etc/my.cnf [mysql] socket=/tmp/mysql.sock [mysqld] user=mysql basedir=/usr/local/mysql datadir=/data/3306/data server_id=51 port=3306 socket=/tmp/mysql.sock log_error=/data/3306/log/mysql-err.log log_bin=/data/3306/log/mysql-bin
重启生效
cd /data/3306/log/ [root@localhost log]# ll total 24 -rw-r----- 1 mysql mysql 156 nov 20 23:26 mysql-bin.000001 -rw-r----- 1 mysql mysql 32 nov 20 23:26 mysql-bin.index
慢日志(slow_log)
作用
记录mysql工作中,运行较慢的语句。用来定位sql语句性能问题。
建议都在my.cnf 中配置,因为重启才能永久生效。
开关: slow_query_log=1 slow_query_log_file= 维度: set global slow_query_log=1 set global long_query_time=0.5 set global log_queries_not_using_indexes=1 set global log_throttle_queries_not_using_indexes=1000;
general_log 业务sql
普通日志,会记录所有数据库发生的事件及语句
[root@localhost ~]# # 普通日志 general_log [root@localhost ~]# # 文本格式记录mysql运行期间,所有的所作语句, 可以做问题诊断和调试 [root@localhost ~]# # 参数: general_log , general_log_file [root@localhost ~]# vim /etc/my.cnf [root@localhost ~]# cat /etc/my.cnf [mysql] socket=/tmp/mysql.sock [mysqld] user=mysql basedir=/usr/local/mysql datadir=/data/3306/data server_id=51 port=3306 socket=/tmp/mysql.sock log_error=/data/3306/log/mysql-err.log log_bin=/data/3306/log/mysql-bin slow_query_log=1 slow_query_log_file=/data/3306/log/slow.log long_query_time=0.5 log_queries_not_using_indexes=1 log_throttle_queries_not_using_indexes=1000 general_log=on general_log_file=/data/3306/log/genlog
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论