日志管理:
1.错误日志:
作用:记录mysql从启动以来,所有的状态,警告,错误。
为我们定位数据库问题,提供帮助。
配置方法:
默认:开启状态,datadir 目录下,本机为 /data/3306/
izm5ej125b6mhu0tdhdzy9z.err
定制方法:
vi /etc/my.cnf
log_error = /tmp/mysql.log
重启生效
1.3怎么看错误日志
查看【ERROR】标记的错误
2.binlog 二进制日志
作用:
主要进行数据库变化(DDL,DCL,DML)性质的日志
数据恢复,主从复制中应用,记录的是逻辑日志,(sql语句)
如何配置:
默认:8.0版本以前没有开启。我们建议生产开启
配置方法:
vi /etc/my.cnf
server_id = 0~65535 #主机编号,主从设置,5.7以后开binlog要设置
log_bin = /data/binlog/mysql-bin #日志位置点+ 日志名前缀
sync_binlog =1 binlog刷盘策略,#双一中的一个一。每次书屋提交立即刷到磁盘
binlog_format = row #binlog记录的模式为row模式
说明:一定要和数据盘分开
例如:
/dev/sdb ---->/data/3306
/dev/sdc ----->/data/binlog
binlog记录内容详解
引入:
binlog是sql层的功能,记录的是变更sql语句,
不记录查询语句。
记录sql语句的种类:
DDL:原封不动的记录当前的DDL( statement方式语句)
DCL:原封不动的记录当前的DCL( statement方式语句)
DML:只记录已经提交的事务DML
DML三种记录方式:
binlog_format(binlog的记录格式)参数影响
1.statement(5.6默认) SBR(statement based replication),语句模式原封不动记录当前DML;
2.ROW模式(5.7默认 推荐),RBR(row based replication) 记录数据行的变化,用户看不懂,需要分析工具。
3.mixed(混合) MBR(mixed based replication) 模式:statement 和row模式的混合
面试题:
SBR与RBR对比
statement:可读性高,日志量少,但是不够严谨
row:可读性很低,日志量大,足够严谨。
例如:遇到插入中执行了带有时间的函数。
statement 时间会获取当前的日志,row记录了之前的具体时间。
所以建议row模式。
even(事件)是什么?
介绍:
二进制日志的最小记录单元
对于DDL,DCL,一个语句就是一个event
对于DML语句来讲:只记录已提交的事务。
例如:以下的列子,就被分为了4个event
start stop (position标记号)
begin; 120 - 340
dml1 340 - 460
dml2 460 - 550
commit; 550 - 760
event的组成
三部分构成:
1.事件的开始标识
2.事件内容
3.事件的结束标识
position:
开始标识:at 194
结束标识:end_log_pos 254
位置号的作用:
为了方便我们截取事件。
binlog的查看
查看是否开启:
查看位置:
文件查看:
二进制日志内置查看命令:
1)查看目前有几个日志文件
mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 154 |
+------------------+-----------+
1 row in set (0.00 sec)
2)查看当前在用的日志文件
mysql> show master status;
3)查看二进制日志事件
show binlog events in 'mysql-bin.000001';
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
| mysql-bin.000001 | 4 | Format_desc | 6 | 123 | Server ver: 5.7.26-log, Binlog ver: 4 |
| mysql-bin.000001 | 123 | Previous_gtids | 6 | 154 | |
+------------------+-----+----------------+-----------+-------------+---------------------------------------+
以上是正常的头格式:
执行语句:
mysql> create database oldguo charset utf8mb4;
网友评论