mysql中的日志

=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语句

相关推荐
海南java第二人1 天前
Nebula Graph 实战:基于图数据库存储 CMDB 实体关系
数据库·图数据库·nebula
weixin_604236671 天前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
曹牧1 天前
oracle:“not all variables bound”
数据库·oracle
数据库百宝箱1 天前
Oracle RMAN Image Copy 本地恢复
数据库·oracle
鹤落晴春1 天前
【Linux复习】管理SELinux安全性
linux·运维·服务器
AI智图坊1 天前
多件装组合SKU图的批量生产效率分析:从PS手工到AI自动化的工作流改造
大数据·运维·人工智能·gpt·ai作画·自动化·aigc
zuYM4g7Dp1 天前
NoSql数据库设计心得
数据库·nosql
bjzhang751 天前
CentOS下安装MySQL详解
linux·mysql·centos
睡不醒男孩0308231 天前
第七篇:揭秘 PostgreSQL 数据库内核级管控:CLup 深度架构设计与高可用底座技术白皮书
数据库·postgresql·clup
cmes_love1 天前
Level 2逐笔成交历史数据下载方法笔记
数据库·笔记·oracle