Mysql日志管理
## 一、事务日志:transaction log
作用:记录事务信息,实现未完成事务撤销(undo),已完成事务重做(redo)
事务日志文件: ib_logfile0, ib_logfile(轮流交替存放)
### 1、ACID特性
A:原子性:整个事务中的所有操作要么全部成功执行,要么全部失败后回滚
C:一致性:与实际完成操作一致
I:隔离性:一个事务在未提交前,可隔离其它事务所见
D:持久性:一旦提交事务,永久保存修改
### 2、隔离级别
读未提交:可读到未提交的数据产生脏读
不可重复读:能读到别人提交的数据,未提交的不可读
可重复读:多次读数据都是一致的,可能产生幻读
串行化:未完成的读事务,阻塞修改事务。未完成的修改事务,阻塞读写事务。导致并发性差
### 3、启用事务,结束事务
begin
commit:提交
rollback:回滚
### 4、innodb事务日志相关配置
show variables like ‘%innodb_log%‘;
![image.png](https://s2.51cto.com/images/20210709/1625784095361512.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
## (2)错误日志:log-error
/var/log/mariadb/mariadb.log
## (3)通用日志:general_log,默认关闭
show variables like ‘general%‘;
show variables like ‘log_output‘;
### 启用日志:vim /etc/my.cnf
log_output=table
general_log
systemctl restart mariadb
日志文件:tail /var/lib/mysql/centos7.log
库文件表:mysql库
## (4)慢查询日志:slow,默认关闭
show variables like ‘long%‘;
show variables like ‘slow_query_log%‘;
### 启用日志:vim /etc/my.cnf
slow_query_log
long_query_time=3
systemctl restart mariadb
日志文件:tail -f /var/lib/mysql/centos7-slow.log
### 监控sql语句中哪条语句比较慢?
set profiling=on;
show profiles;
show profile for query 2;
mysql客户端命令历史
. /mysql_history
## (5)二进制日志,默认关闭
show variables like ‘sql_log_bin‘;
show variables like ‘log_bin‘;
### 启用日志:vim /etc/my.cnf
binlog_format=row
log-bin=/data/logbin/mysql-bin
mkdir /data/logbin
chown mysql.mysql /data/logbin/
show master logs;
show master status;
查看文件
show binlog events in ‘mariadb-bin.000002‘ from 245 limit 2,3;
mysqlbinlog