作用 :
记录MySQL从启动以来,所有的状态,警告,错误。
为我们定位数据库问题,提供帮助。
配置方法
vim /etc/my.cnf ->log_error=/tmp/mysql.log
说明: 日志目录必须得提前有,并且mysql有权限写入。
作用:
主要记录数据库变化(DDL,DCL,DML)性质的日志。是逻辑层性质日志。
数据恢复,主从复制中应用
配置
默认: 8.0版本以前,没有开启。我们建议生产开启。
vim /etc/my.cnf
server_id=6 # 主机编号。主从中使用,5.7以后开binlog要加此参数
log_bin=/data/binlog/mysql-bin # 日志存放目录+日志名前缀,例如: mysql-bin.000001 mysql-bin.000002
sync_binlog=1 # binlog日志刷盘策略,双一中的第二个1。每次事务提交立即刷写binlog到磁盘。
binlog_format=row # binlog的记录格式为row模式
说明: 一定要和数据盘分开.用来数据备份恢复
mkdir -p /data/binlog/
chown -R mysql.mysql /data/*
重启生效
binlog记录内容详解
binlog是SQL层的功能。记录的是变更SQL语句,不记录查询语句。
记录SQL语句种类
DDL :原封不动的记录当前DDL(statement语句方式)。
DCL :原封不动的记录当前DCL(statement语句方式)。
DML :只记录已经提交的事务DML(insert , update ,delete)
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)模式 :以上两种模式的混合
event(事件)
二进制日志的最小记录单元
对于DDL,DCL,一个语句就是一个event
对于DML语句来讲:只记录已提交的事务。
例如以下列子,就被分为了4个event
position
start stop
begin; 120 - 340
DML1 340 - 460
DML2 460 - 550
commit; 550 - 760
event的组成
三部分构成:
(1) 事件的开始标识
(2) 事件内容
(3) 事件的结束标识
Position:
开始标识: at 194
结束标识: end_log_pos 254
binlog的查看
查看开启情况
select @@log_bin;
select @@log_bin_basename;
二进制内置查看命令
(1)查看目前有几个日志文件
mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 177 |
| mysql-bin.000002 | 154 |
+------------------+-----------+
(2)查看当前再用的binlog
mysql> show master status ;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
(3)查看二进制日志事件。
mysql> create database panky charset utf8mb4; mysql> show binlog events in ‘mysql-bin.000002‘; mysql> grant all on *.* to root@‘10.0.0.%‘ identified by ‘123‘; mysql> show binlog events in ‘mysql-bin.000002‘; mysql> use world mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> delete from city where id<10; Query OK, 8 rows affected (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec)
原文:https://www.cnblogs.com/metoyou/p/12363857.html