1、重要参数说明
log_bin // 0,1二进制日志的开关
log_bin_basename // 二进制日志的存放路径及文件头名
server_id // 主机唯一识别号,多实例或主从环境必加,单机可免
bin_log_format // 二进制日志格式 statment, row, mixed 三种
sync_binlog // 二进制日志的刷新方式,也是mysql重要的双一标准之一
0 表示mysql不控制二进制日志刷新,由系统控制,定时刷新
1 表示当mysql commit事件时,二进制日志同步写入硬盘
1 最安全,不容易丢数据,为默认值
2、启用二进制日志的流程
1、修改配置文件
vim /etc/my.cnf
log_bin=/data/binlog/mysql-bin
// 5.7版本中,log_bin和log_bin_basename可以合并为一个,其他默认即可
2、创建binlog文件夹
mkdir -p /data/binlog
3、授权
chown -R mysql.mysql /data
4、重启mysql
3、查看二进制日志
1、在mysql内用show命令查看日志中的事物
mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];
选项解析:
IN 'log_name' 指定要查询的binlog文件名(不指定就是第一个binlog文件)
FROM pos 指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)
LIMIT [offset,] 偏移量(不指定就是0)
row_count 查询总条数(不指定就是所有行)
使用案例:
A.查询第一个(最早)的binlog日志:
mysql> show binlog events\G;
B.指定查询 mysql-bin.000021 这个文件:
mysql> show binlog events in 'mysql-bin.000021'\G;
C.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起:
mysql> show binlog events in 'mysql-bin.000021' from 8224\G;
D.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起,查询10条
mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 10\G;
E.指定查询 mysql-bin.000021 这个文件,从pos点:8224开始查起,偏移2行,查询10条
mysql> show binlog events in 'mysql-bin.000021' from 8224 limit 2,10\G;
2、在linux中用mysqlbinlog查看二进制内容
mysqlbinlog [文件全路径/文件名]
使用案例
mysqlbinlog /data/binlog/mysql-bin.000001
4、清理日志
flow logs // 滚动日志,滚动后会产生新的二进制日志,该命令对错误日志也有效,将错误
日志改名后,滚动会产生新的错误日志
reset master // 删除所有二进制日志,并重新产生新的二进制日志
5、GTID
(1) 配置gtid
vim /etc/my.cnf
gtid_mode=on
enforce_gtid_consistency=true
(2) 检查
show variables like '%gtid%';
6、 恢复数据
(1)截取需要恢复的日志段,将其写入一个sql文件中
mysqlbinlog --start-position=起点 --stop-position=终点 /路径/文件名 >/路径/文件名.sql
(2)进入数据库,临时关闭二级制日志
set sql_log_bin=0
(3)source该文件