mysql中的日志
MySQL数据库系统日志管理摘要 MySQL包含四种核心数据库:information_schema(数据字典)、performance_schema(性能架构)、sys(系统库)和mysql(核心控制库)。日志系统默认开启,主要存放于/data/mysql目录下,包括错误日志(主机名.err)、通用日志、慢日志和二进制日志。 错误日志:记录系统错误信息,默认开启,用于故障排查 通用日志:记录所有
=mysql中的数据库
①information_schema 信息数据库:数据字典库–》资产库,存放MySQL里的资产,例如有多少表,库,视图,触发器,存储过程等
②performance_schema 性能架构库
③sys库: MySQL系统
④mysql的核心数据库,类似于sql server中的master表,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息。
====日志:默认是开启的=
riz
日志的存放路径:/data/mysql
[root@sc-mysql mysql]# pwd
/data/mysql
存放日志的文件:sc-mysql.err 、
MySQL的配置文件存放路径:/ect/my.cnf
[root@sc-mysql mysql]# cat /etc/my.cnf
[mysqld_safe]
[client]
socket=/data/mysql/mysql.sock
[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8
[mysql]
auto-rehash
prompt=\u@\d \R:\m mysql>
为什么需要日志?
日志用来做什么?
1.用来排错
2.用来做数据分析
3.了解程序的运行情况,是否健康–》了解MySQL的性能,运行情况。
1、==错误日志:默认开启=
1、名字是主机名.err:error:如:sc-mysql.err
路径会存放在/data目录下;存放在数据目录下.
[root@sc-mysql mysql]# service mysqld start
Starting MySQL.Logging to ‘/data/mysql/sc-mysql.err’.
SUCCESS!
2、error配置: 日志的命名使用_和-都可以:
如果指定错误日志的路径,主要目的地的目录需要给mysql用户写的权限:
使用绝对路径启动有问题:
chown mysql:mysql /mysql_log/
2、==通用日志:默认是关闭的=
1、缺点:消耗大量的磁盘空间;消耗cpu、内存、磁盘资源
优点:会记录所有的SQL操作—审计的作用 general
2、默认是不开启的。可以进行查看
root@(none) 09:36 mysql>show variables like “general_log”;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| general_log | ON |
±--------------±------+
1 row in set (0.00 sec)
3、默认存放在数据目录下,名字是主机名.log。
临时开启:
mysql> set global general_log = 1;
1是开启 0 是关闭。修改为1:表示开启。
root@mysql 16:22 mysql>select @@general_log;
±--------------+
| @@general_log |
±--------------+
| 1 |
±--------------+
1 row in set (0.00 sec)
在配置文件中永久开启:
#general log
general_log
general_log_file=/data/mysql/sanchuang_mysql_ge.log
3、=慢日志:记录消耗时长,默认关闭
slow:存放在数据目录下,名字是主机名+slow.log
作用:记录消耗时间比较长的SQL语句,为数据库性能提升提供了线索。
最近数据库压力(负载特别高),客户反应网站或者应用使用特别慢,领导要求你查明原因?
谁去优化?优化什么?:dba人员去优化、运维人员有能力也可以进行优化。
1.SQL语句需要优化,在数据库里启用慢日志,找出执行时间比较长的SQL
2.业务量太大了,硬件已经达到极限了 ,top、glances、dstat
默认的是10秒。
mysql> show variables like “%long_query%”;
±----------------±---------+
| Variable_name | Value |
±----------------±---------+
| long_query_time | 10.000 |
±----------------±---------+
1 row in set (0.00 sec)
修改为时长:在配置文件中进行修改:
#slow query log
slow_query_log = 1
long_query_time = 0.001 #标准
mysql> show variables like “%long_query%”;
±----------------±---------+
| Variable_name | Value |
±----------------±---------+
| long_query_time | 0.001000 |
±----------------±---------+
查看查询sql语句的时间为多长时间:
==二进制日志:binary
二进制日志是记录所有数据库表结构变更(例如CREATE、ALTER TBALE…)以及表数据更改(INSERT \DELETE\UPDATE\UPDATE…)的二进制日志。
二进制日志:记录执行的SQL语句
对数据进行修改、增加、删除等。
默认没有开启。
开启二进制日志
查看二进制文件是否开启
root@(none) 10:42 mysql>show variables like ‘server_id’;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| server_id | 1 |
±--------------±------+
1 row in set (0.01 sec)
查看二进制文件是否开启
root@(none) 10:42 mysql>show variables like ‘log_bin’;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| log_bin | ON |
±--------------±------+
1 row in set (0.01 sec)
修改二进制文件为开启:
文件路径:/etc/my.cnf
log_bin
server_id = 1
加入到[mysqld]下面:
[mysqld]
socket=/data/mysql/mysql.sock
port = 3306
open_files_limit = 8192
innodb_buffer_pool_size = 512M
character-set-server=utf8
log_bin #日志文件名称,未指定位置,默认数据文件位置
server_id=1
server_id 是服务器的唯一标识,在主从复制的时候使用,每天服务器的id不能一样,不然会导致主从复制失败。
修改了之后,重启mysqld:
service mysqld restart
查看二进制文件所存放的文件:这里是存放在|:sc-mysql-bin.000001
root@(none) 11:46 mysql>show master status;
±--------------------±---------±-------------±-----------------±------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
±--------------------±---------±-------------±-----------------±------------------+
| sc-mysql-bin.000001 | 154 | | | |
±--------------------±---------±-------------±-----------------±------------------+
1 row in set (0.01 sec)
作用:
数据恢复:
二进制日志里会记录什么时间发送了什么事情
恢复数据的时候:
1.根据时间来恢复
2.根据位置来恢复Position
可以用来恢复数据:
查看二进制日志===
相关操作:
二进制文件相关操作
SHOW BINARY LOGS 查看所有的二进制文件和大小
SHOW MASTER STATUS 查看当前正在使用那个二进制文件和位置
SHOW BINLOG EVENTS
PURGE BINARY LOGS TO ‘WANGJING-MYSQL-bin.000003’
=====mysqlbinlog:查看日志
mysqlbinlog -v:
mysqlbinlog -vv;信息更加多
mysqlbinlog -vv sc-mysql-bin.000001
查看进制日志文件的大小:
二进制日志文件的大小:当二进制文件达到最大值1G的时候,也会产生新的日志。
root@yejing 16:13 mysql>show variables like “%max_binlog%”;
±---------------------------±---------------------+
| Variable_name | Value |
±---------------------------±---------------------+
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 1073741824 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
±---------------------------±---------------------+
3 rows in set (0.00 sec)
root@yejing 16:13 mysql>select 1073741824/1024/1024/1024;
±--------------------------+
| 1073741824/1024/1024/1024 |
±--------------------------+
| 1.000000000000 |
±--------------------------+
1 row in set (0.00 sec)
===二进制都会产生新的日志
二进制文件达到最大值1G的时候,也会产生新的日志。
重启服务。
flush logs::刷新日志。
=position:记录具体的事件的位置,位置号=
time:时间点=
======删除所有的二进制日志
reset master:清除所有的二进制日志。
自动清除日志:https://blog.csdn.net/hanchao5272/article/details/79227325
root@TENNIS 15:01 sc-mysql>show variables like “%expire_logs_days%”;
±-----------------±------+
| Variable_name | Value |
±-----------------±------+
| expire_logs_days | 7 |
±-----------------±------+
1 row in set (0.02 sec)
========产生新的二进制日志文件
二进制的格式:1、row level:默认
记录操作的每一行数据 --》表里的哪些行的数据发生了变化
root@(none) 11:13 mysql>select version();
±-----------+
| version() |
±-----------+
| 5.7.26-log |
±-----------+
1 row in set (0.00 sec)
root@(none) 11:13 mysql>show variables like ‘binlog_format’;
±--------------±------+
| Variable_name | Value |
±--------------±------+
| binlog_format | ROW |
±--------------±------+
1 row in set (0.00 sec)
2、statement level:记录用户输入的SQL语句
更多推荐
所有评论(0)