sqlserver 还原bak文件 查看不到_MySQL5.7 如何使用日志进行时间点还原

Mysql 5.7 使用备份+日志进行时间点还原

b8ec08dcf5e3783dcb62460640353e08.png

环境

Mysql5.7 两个实例

10.106.216.182:3306

10.106.216.182:3307

这里我们使用3306实例来操作数据,并产生日志,还原及时间点操作在3307上进行,因为生产环境一般别再生产实例上操作,这些都比较危险

3306原始库进行数据操作

先初始化日志:

reset master ;

show master status;

273215b5888749ebf57122bda8ae508f.png

创建一个表 并插入一些数据

CREATE TABLE `test`.`test` (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR(45) NULL,

PRIMARY KEY (`id`));

insert into test.test(name) values('a'),('b'),('c')

b382694f3d3204cb2b9c3f8b90b38f6e.png

备份3306 上的test库

mysqldump -S /data/3306/mysql.sock --master-data --single-transaction --user=root --password=123456 --databases test> 3306test.db

重启3306 上的test库

flush logs;

show binary logs;

a5a8431f6b0c1052cf587b43105ff355.png

操作数据

insert into test.test(name) values('a'),('b'),('c')

cbbf7c0a9fc57ed60ed1fe206839c1d3.png

update test.test

set name= concat(name,'-h')

where id =3

2f304932c0832900c9a85762ed7f4074.png

delete from test.test

where id in (3,5);

bbff5b141fcbac0786a3c7033dd96c1a.png

还原及利用二进制日志操作

我们现在利用的3306的备份文件和相应的日志进行操作

将备份文件和 日志都拷贝到要恢复的服务器上(这里我们是一台服务器),

文件夹为 /root/bak

b6e79f4b876f394c49ed5bf657e9697c.png

登陆3307 先初始化日志为还原做准备

reset master ;

show master status;

e68a64cc912d635a95d055cf9f80dbfd.png

使用3306备份还原库

mysql -S /data/3307/mysql.sock -u root -p

source /root/bak/3306test.db

对比3306 和 3307 中test表

ee262fef4cc984ab84183b1e4ed0d181.png
90fba2b54881993db9685d854fb9567d.png

通过查询binlog 日志,找出需要恢复的时间点

mysqlbinlog mysql3306-bin.000002| more

66dc44cdcb986d813fce55acb2033e39.png

为了更好的查找要恢复的节点,我们将日志打印出sql语句来

mysqlbinlog --start-datetime='2019-11-23 01:01:01' --stop-datetime='2019-11-23 16:38:00' /root/bak/mysql3306-bin.000002 -v

并且使用时间来进行限定, 另外在二进制日志中,时间是使用时间戳,我们要把时间戳转换成时间

select from_unixtime(1574454464)

2019-11-23 04:27:44

使用二进制日志进行还原数据

1ec7e29cd246e388db19f6bfd19ed7bc.png

mysqlbinlog --stop-position="443" --start-position="296" /root/bak/mysql3306-bin.000002 | mysql -S /data/3307/mysql.sock -u root -p test

181f40ed32f19a6240a2fd8e00bcd089.png

还原完后我们看下数据对比

SELECT * FROM test.test;

f13b339ef34b291bcc951873ce27fc87.png
be2d23a9c15af8c7253d54efb90b8b99.png

mysqlbinlog --start-position="443" /root/bak/mysql3306-bin.000002 | mysql -S /data/3307/mysql.sock -u root -p test

最后进行对比

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值