#删除二进制日志#原则"
在存储能力范围内,能多保留则多保留
基于上一次全备前的可以选择删除
1.删除7天前的binlog
#临时生效
SET GLOBAL expire_logs_days = 7;#永久生效[root@db01 data]# vim /etc/my.cnf[mysqld]
expire_logs_days = 7
show binary logs;
2.只保留3天的
PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day;
3.删除指定binlog名之前的所有binlog(保留指定的binlog)
PURGE BINARY LOGS TO 'mysql-bin.00004';
4.删除所有binlog,相当于重置
mysql> reset master;
ansible做主从的时候有的人因为名字和位置点不好获取,他每次都会reset,如果先同步了所有数据那没问题,如果没同步问题就大了;
四、实战演练使用binlog恢复数据
1.对数据库一顿操作
#查看binlog信息
mysql> show master status;#创建一个binlog库
mysql> create database binlog;#使用binlog库
mysql> use binlog
#创建binglog_table表
mysql> create table binlog_table(id int);#查看binlog信息
mysql> show master status;#插入数据1
mysql> insert into binlog_table values(1);#查看binlog信息
mysql> show master status;#提交
mysql> commit;#查看binlog信息
mysql> show master status;#插入数据2
mysql> insert into binlog_table values(2);#插入数据3
mysql> insert into binlog_table values(3);#查看binlog信息
mysql> show master status;#提交
mysql> commit;#删除数据1
mysql> delete from binlog_table where id=1;#查看binlog信息
mysql> show master status;#提交
mysql> commit;#更改数据2为22
mysql> update binlog_table set id=22 where id=2;#查看binlog
mysql> show master status;#提交
mysql> commit;#查看binlog信息
mysql> show master status;#查看数据
mysql>select * from binlog_table;#删表
mysql> drop table binlog_table;#删库
mysql> drop database binlog;
2.binlog恢复数据
#查看binlog事件
mysql> show binlog events in'mysql-bin.000013';#使用mysqlbinlog来查看[root@db01 data]# mysqlbinlog /application/mysql/data/mysql-bin.000013[root@db01 data]# mysqlbinlog /application/mysql/data/mysql-bin.000013|grep -v SET[root@db01 data]# mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000013### UPDATE `binlog`.`binlog_table`### WHERE### @1=2 /* INT meta=0 nullable=1 is_null=0 */### SET### @1=22 /* INT meta=0 nullable=1 is_null=0 */#分析
update binlog.binlog_table
set
@1=22 --------->@1表示binlog_table中的第一列,集合表结构就是id=22
where
@1=2 --------->@1表示binlog_table中的第一列,集合表结构就是id=2
#结果
update binlog.binlog_table set id=22 where id=2;#截取二进制日志
查看二进制日志后,发现delete语句开始位置是858
[root@db01 data]# mysqlbinlog --start-position=120 --stop-position=858 /application/mysql/data/mysql-bin.000013#临时关闭binlog
mysql>set sql_log_bin=0;#执行sql文件
mysql>source /tmp/binlog.sql
#查看删除的库
mysql> show databases;#进binlog库
mysql> use binlog
#查看删除的表
mysql> show tables;#查看表中内容
mysql>select * from binlog_table;