主从依赖二进制日志;数据恢复需要依赖于二进制日志
vi /etc/my.cnf
查看日志保留天数:show variables like '%expire%';
expire_logs_days=8 (依据至少一轮全备周期长度的过期事件)
mysql> help purge;
PURGE BINARY LOGS TO 'mysql-bin.000003'; //删除000003之前日志
PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';
reset master; //日志重新从000001开始,主从避免使用
DML的记录格式(statement、row、mixed),通过binlog_format=row参数控制
说明:
statement: SBR,语句模式记录sql
row: RBR,行模式,数据行的变化
mixed: MBR,混合模式
SBR和RBR的区别,怎么选择?
----SBR 可读性强,节约空间,日志量少,但是可能有记录不准确的情况。
----RBR 可读性差,日志量大,不会出现记录错误。高可用环境依赖RBR
对数据严谨性较高,选择RBR。
DDL语句每个语句就是一个单元
create database testdb;事件1
DML:一个事务包含了多个语句
begin; 事件1
a 事件2
b 事件3
commit; 事件4
作用:方便从日志冲截取需要的日志信息
mysql> show variables like '%log_bin%';
====>log_bin_basename /data/binlog/mysql-bin
mysql> show binary logs;
mysql> flush logs;
mysql> show binary logs;
mysql> show master status;
mysql> create database mybinlog;
mysql> use mybinlog;
mysql> create table t1 (id int );
mysql> insert into t1 values(1),(2);
mysql> show master status;
mysql> show binlog event in 'mysql-bin.000002' limit 5;
mysqlbinlog mysql-bin.000002
mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000002
mysqlbinlog -d ygb mysql-bin.000002 //按库截取二进制内容
mysqlbinlog --start-position=219 --stop-position=325 mysql-bin.000002 >aaa.sql
1)模拟数据
mysql> create database ygb charset utf8mb4;
mysql> use ygb;
mysql> create table t1 (id int );
mysql> insert into t1 values(1),(2);
mysql> drop database ygb;
3)基于binlog恢复
mysqlbinlog --start-position=828 --stop-position=1418 mysql-bin.000002 >aaa.sql