mysql数据恢复某一时间点_mysql时间点数据恢复

本文详细介绍了如何通过指定恢复时间点,恢复MySQL中误删的表数据。首先创建测试库和表,插入数据,然后进行全备。接着模拟删除表操作,并在之后创建新表并插入数据。恢复步骤包括停止应用做当前时间点全备,关闭binlog,删除库,还原全备,使用binlog恢复特定时间点前后的数据,最后打开binlog并重启服务,成功恢复了误删表的所有数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

。本文演示的是使用指定恢复时间点的方式。

【恢复场景准备】

1. 测试库新建一个测试库yewu_test和delete_test的表

create table delete_test(uIn int, name varchar(30));

2. 插入三条测试数据:insert into  delete_test values(1,'a'),(2,'b'),(3,'c');

3. 创建一个全备份,备份完成时间2010-04-05 19:57:29

mysqldump -uroot --socket=/tmp/mysql_tmp.sock --single-transaction --master-data=2 --skip-opt --no-autocommit --create-options yewu_test > yewu_test.sql

4. 在2013-04-05 20:01:14分删除delete_test表

drop table delete_test;

5. 在2013-04-05 20:04:47分创建一个新表并插入数据

create table after_time_table(uIn int, colname varchar(30));

insert into after_time_table values(1,'col1'),(2,'col2');

现在要求恢复误删的delete_test表的所有数据

【实施恢复步骤】

1. 停止应用并做当前时间点的一个全备(如果恢复操作失败,用于回档)

2. 关闭binlog后重启mysqld

1)注释/etc/my.cnf配置文件中的log_bin配置

2)mysqladmin --socket=/tmp/mysql_tmp.sock -uroot shutdown

3)mysqld_safe --defaults-file=/etc/my.cnf --socket=/tmp/mysql_tmp.sock &

3. 进入mysql客户端并删除yewu_test库

drop database yewu_test;

4. 还原2013-04-05 19:57:29的全备

create database yewu_test;

mysql --default-character-set=gbk -uroot yewu_test --socket=/tmp/mysql_tmp.sock < yewutest.sql

5. 恢复截止到2013-04-05 20:01:13的数据(即恢复drop table delete_test前的所有数据)

mysqlbinlog -uroot --socket=/tmp/mysql_tmp.sock --stop-date='2010-04-05 20:01:13' binlog.000010 | mysql -uroot --socket=/tmp/mysql_tmp.sock

6. 恢复从2013-04-05 20:01:15到当前的数据(即恢复drop table delete_test后的所有数据)

mysqlbinlog -uroot --socket=/tmp/mysql_tmp.sock --start-date='2010-04-05 20:01:15' binlog.000010 | mysql -uroot --socket=/tmp/mysql_tmp.sock

7. 打开binlog并重启mysqld

./bin/mysqld_safe --defaults-file=/etc/my.cnf --socket=/tmp/mysql_tmp.sock &

8. 此时在yewu_test库看到delete_test表的所有数据已经还原,另外,在drop table delete_test之后所有的数据库操作(建表和插入数据到after_time_table),也同样被恢复。

说明:上述基于时间的恢复,精确的时间是从binlog文件中找到该语句对应的具体时间点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值