mysql日志设置

mysql文件种类

  1. 参数文件my.cnf
  2. 日志文件
  3. socket文件
  4. pid文件
  5. mysql表结构文件
  6. 存储引擎文件

参数文件my.cnf

Mysql实例启动时,会先读取配置参数文件my.cnf
寻找my.cnf位置
1. 默认情况: mysql --help|grep my.cnf
2. 后台进程去找:ps –eaf|grep mysql
3. 全局搜索:find / -name my.cnf
可以用vi直接维护修改里面的参数值
1. dynamic 动态修改参数:可以通过set进行实时修改
set global 参数=值 全局;
set 参数=值 当前会话 ,重启都无效;
2. static,只能在my.cnf里面修改,需要restart生效

日志文件

1. error日志

查看 show variables like 'log_error';
My.cnf里面设置 : log-error=/usr/local/mysql/mysqld.log
查看alert信息、error信息、warning信息

2. binary日志

binary日志主要记录的是对数据库已经执行完了的操作,但不包括select show操作,因为这类操作对数据库没有任何变动。如果想看select、show就可以去general log查看。
binary生效:
my.cnf配置:log-bin =/home/data/mysql/binlog/mysql-bin.log
Mysql-bin.index记录的是以max_binlog_size为单位的binlog日志文件索引
binlog日志参数:
max_binlog_size单个文件最大值(默认1g,但是在电商行业订单系统通常是64m,方面快速复制,这也是比较通用的大小)、
binlog_cache_size(在使用innodb引擎的时候,所有未提交事务操作都会先放到binlog缓存中,等待事务提交的时候就会刷到binlog二进制日志文件中。Session级的内存区,每个session都会分配size大小的内存,默认32k可以提高到1m左右)、
sync_binlog
binlog-do-db(需要写入日志的库)、
binlog-ingore-db(忽略写入日志的库)、
log-slave-update(当需要在从库上搭建下一阶从库的时候需要,因为从库一般是不能写入的日志。开启后可以搭建环形)
binlog-format日志格式
Statement(不需要记录变化数据,只需要记录影响变化的sql语句insert update delete create等,减少binlog日志量,节约io资源,日志传输的时候提高网络传输速率)
row(行模式:不记录每一句sql ,记录的是数据的变化,通过insert update方式记录数据点,日志量会非常大)、
mixed(混合模式:一般语句操作就记录语句,函数操作等记录行的变化。综合语句和行模式优点)
my.cnf里面设置 binlog_format = MIXED; expire_logs_days = 7 (清理过期的日志,天为单位) ;
中小型电商用mixed模式,大型电商用row模式,通过万兆网卡保证主从数据一致性,非电商非互联网用statement足够了。

主要作用:恢复数据+复制(主从同步)

3. slow 日志

查看是否开启:
show variables like 'slow_query_log%';
show variables like 'long_query_time’;
long_query_time=0 (记录所有sql可以做审计)
show variables like 'log_queries_not_using_indexes';
使用mysqldumpslow来进行分析
Slow_log表,也可以将慢查询日志放入一张表里面
show variables like ‘log_output’;查看如果是file就存放在slow log里面,如果是table就在slow_log表里面。

4. general日志

日志开启方法:
show variables like '%general_log%';
set [global] general_log=ON
通过tail –f直接查看日志内容,general适用于数据库审计 + 问题排查跟踪 (损失3%-5%性能)

5. redo文件

Innodb采用日志先行的规则,默认情况下,会有2个重做日志文件
ib_logfile0 和 ib_logfile1(一组)
记录了innodb存储引擎的事务日志,当实例失败,比如master掉电等等,innodb就会通过redo文件恢复数据库到掉电前的那一刻,以此保证数据完整性。重做日志至少是一组文件,可以通过将redo文件放到不同磁盘上提升数据库一点性能。
show variables like ‘innodb%log%’;
查看redo参数其中:innodb_log_file_size为redo文件大小,innodb_log_buffer_size日志缓冲大小,如果写入速率比较高的话可以设置稍高一些,但是不要大于innodb_log_file_size
重要属于LSN : log sequence number,是递增产生的,是可以唯一标识一条redo日志,对数据库故障非常重要,可以唯一定位数据库运行状态。可以判断数据一致性。在数据库恢复的时候可以看到LSN。
源码:在”storage/innobase/include/log0log.h”

6. undo文件

存在于共享表空间ibdata里面,如果是独立表空间,undo文件会存放到独立表空间中。

作用:Mvcc(保证数据一致性) +事务回滚的时候通过undo文件执行数据回滚。

undo存放
undo存放
Undo page header 页头信息
Undo segment header 段头信息
Undo record 记录信息
Undo_log overview数据展示信息

套接字文件socket

外部的client连接mysql数据库需要使用socket文件
ps -eaf|grep mysql |grep socket
查看socket文件位置 show variables like 'socket';
My.cnf (socket = /usr/local/mysql/mysql.sock)

Pid文件

数据库后台进程文件,mysql启动后会将后台进程id写入文件。
show variables like 'pid_file';
ps -eaf|grep mysql |grep pid
My.cnf (pid-file= /usr/local/mysql/mysqld.pid

表结构文件

通过datadir查看,如果是独立表空间就会在data文件里面生成对应数据库名字的文件夹,里面存放表文件
show variables like ‘% datadir %’;或者my.cnf中查找
*.frm 记录表结构定义
*.ibd 记录索引和数据

[root@localhost data]# ll test/
total 540
-rw-rw----. 1 mysql mysql  8586 Jul  2 09:25 t1.frm #t1表结构
-rw-rw----. 1 mysql mysql 98304 Jul  8 10:50 t1.ibd #t1表索引数据
-rw-rw----. 1 mysql mysql  8586 Jul  8 10:42 t2.frm
-rw-rw----. 1 mysql mysql 98304 Jul  8 10:43 t2.ibd

innodb存储引擎文件

My.cnf里面:
innodb_data_file_path
innodb_data_file_path = IBdata1:128M;IBdata2:128M:autoextend这是一组文件,如果是多组,可以放到不同的磁盘空间上面,分散io压力,提高性能

[root@localhost data]# ll
total 5255244
-rw-rw----. 1 mysql mysql         56 Jun 18 11:19 auto.cnf
-rw-rw----. 1 mysql mysql   12582912 Jun 18 11:59 ibdata1
-rw-rw----. 1 mysql mysql 1073741824 Jul  9 05:03 IBdata1
-rw-rw----. 1 mysql mysql 1073741824 Jul  8 14:44 IBdata2
-rw-rw----. 1 mysql mysql 1073741824 Jul  9 05:03 ib_logfile0
-rw-rw----. 1 mysql mysql 1073741824 Jun 18 12:14 ib_logfile1
-rw-rw----. 1 mysql mysql 1073741824 Jun 18 12:14 ib_logfile2
-rw-r-----. 1 mysql root       12049 Jun 18 11:59 localhost.localdomain.err
-rw-rw----. 1 mysql mysql      27537 Jul  9 05:03 localhost-slow.log
drwx------. 2 mysql mysql       4096 Jun 18 12:14 mysql
drwx------. 2 mysql mysql       4096 Jun 18 12:14 performance_schema
drwx------. 2 mysql mysql       4096 Jul  8 10:55 test##独立表空间文件
### 设置 MySQL 审计日志级别 MySQL 的审计日志功能由其插件(如 `audit_log` 插件)提供支持,允许用户记录数据库活动以满足安全和合规性需求。通过调整审计日志的级别,可以控制日志记录的详细程度。 #### 配置审计日志级别的方法 MySQL 审计插件通常提供多个日志级别,用于控制记录的详细程度。例如,`audit_log` 插件支持以下日志级别: - **0**:不记录任何日志。 - **1**:记录基本的审计事件(如登录、查询、连接等)。 - **2**:记录更详细的审计事件(包括 SQL 语句)。 - **3**:记录所有审计事件(包括详细的调试信息)。 要配置 MySQL 审计日志级别,需要修改 MySQL 的配置文件(通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`)并设置相应的参数。以下是具体步骤: 1. **编辑 MySQL 配置文件** 在 `[mysqld]` 部分添加或修改以下参数: ```ini [mysqld] plugin-load-add=audit_log.so audit_log_policy=ALL audit_log_format=NEW audit_log_level=2 ``` - `audit_log_policy`:定义记录的事件类型,`ALL` 表示记录所有事件。 - `audit_log_format`:定义日志格式,`NEW` 表示使用新格式。 - `audit_log_level`:设置日志级别为 2,记录详细的审计事件[^1]。 2. **重启 MySQL 服务** 修改完配置文件后,需要重启 MySQL 服务以使更改生效: ```bash systemctl restart mysqld ``` 3. **验证配置** 登录到 MySQL 并执行以下命令,检查审计日志相关的参数是否生效: ```sql SHOW VARIABLES LIKE 'audit_log%'; ``` 输出应显示 `audit_log_level` 的值为 2,表示配置已生效。 #### 示例代码 以下是一个完整的配置示例,展示如何在 MySQL 配置文件中设置审计日志级别: ```ini [mysqld] plugin-load-add=audit_log.so audit_log_policy=ALL audit_log_format=NEW audit_log_level=2 ``` 重启 MySQL 服务后,审计日志将按照指定的级别记录事件。 #### 审计日志存储位置 默认情况下,审计日志文件存储在 MySQL 的数据目录中(通常是 `/var/lib/mysql/`)。可以通过以下命令查看日志文件的位置: ```bash SHOW VARIABLES LIKE 'datadir'; ``` 如果需要将审计日志存储到其他位置,可以在配置文件中指定: ```ini audit_log_file=/var/log/mysql/audit.log ``` 确保目录存在并具有适当的权限: ```bash mkdir -p /var/log/mysql chown mysql:mysql /var/log/mysql ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值