Mysql在线日志+备份+恢复

开启Mysql二进制在线日志需要配置这几个参数
log_bin=ON #开启Mysql二进制在线日志
log_bin_index=… #二进制文件位置
log_bin_index=…#二进制索引文件位置
server-id = 1 #Mysql实例编号
expire_logs_days=10 #日志文件有效天数

打开my.ini或my.cnf文件
server-id = 1
expire_logs_days=21
binlog_format=row
log_slave_updates=ON
log_bin=D:/mysql-5.7.16-winx64/data/binlog
log_bin_index=D:/mysql-5.7.16-winx64/data/binlog_index

重新启动Mysql
连接Mysql
mysql -uroot -proot
查看在线日志
show master logs
在这里插入图片描述
查看当前生效日志状态
show master status
在这里插入图片描述
新建日志文件
flush logs;
在这里插入图片描述
清空全部日志,重新记录
reset master;
在这里插入图片描述
查看在线日志中事件记录
show binlog events in ‘binlog.000001’;
在这里插入图片描述

数据备份与恢复

Mysql数据库安全需要依赖Mysql数据库的全量备份和在线日志来保证,全量备份提供每个时间点的数据快照,在线日志能够保证数据微量变化的恢复,需要两者相互配合保证Mysql的数据安全。

在这里插入图片描述
恢复误删除的数据正确的操作步骤是:
1、将数据库全量恢复到2号,使用备份集backup2.sql恢复数据库。
2、重新生成在线日志3,使用命令flush logs;保证在线日志3记录所有后续操作,而在线日志2中保留错误删除操作,不再更新。
3、查看在线日志2中事件记录,找出删除操作前面位置编号pos=1,
4、将当前数据恢复到在线日志2的pos=1处,此时误删除的数据尚未删除,相当于找回了数据。
5、开启数据库上的应用,正常使用数据库。

例程:
T0时刻:
重建在线日志,方便在线日志中事件查询
flush logs;

T1时刻:
创建数据库表test
create table test (id int,name varchar(20));

T2时刻:
向表test添加数据
insert into test(id,name) values(1,‘java’);
insert into test(id,name) values(2,‘c++’);
在这里插入图片描述
T3时刻:
备份数据库
mysqldump -uroot -proot test > test.sql

T4时刻:
向数据库表test添加数据
insert into test(id,name) values(3,‘python’);
删除表test中id=1的数据
delete from test where id=1;
在这里插入图片描述
T5时刻:
需要恢复误删除数据id=1

查看在线日志
show master logs;
在这里插入图片描述

查看当前日志
show master status;
在这里插入图片描述

查看在线日志binlog.000003中的事件
在这里插入图片描述

使用全量备份文件test.sql恢复数据库
mysql -uroot -proot test < test.sql;
在这里插入图片描述
当前数据库中没有id=3的数据
使用在线日志重演数据库
从pos=4 到 pos=1263的日志记录中包含了
创建表test记录,备份文件test.sql已经包含了test数据库表,所以从4-1263恢复数据会报错误,你可以在当前数据库中删除表test
drop table test;

再执行

mysqlbinlog …/data/binlog.000003 --start-position=4 --stop-position=1263 | mysql -uroot -proot test

在这里插入图片描述
数据id=1和id=3的数据都恢复回来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值