实战演练MySQL被误删的表、库恢复 将数据库恢复到指定的时间点

### 实战演练MySQL被误删的表、库恢复 将数据库恢复到指定的时间点 在实际操作中,数据库管理员(DBA)经常会遇到误删表或数据库的情况,这对于业务来说可能是灾难性的。本文将详细介绍如何在MySQL环境中进行误删表或数据库的恢复,并进一步讲解如何将整个数据库恢复到某个特定的时间点。 #### 一、记录被误删的恢复 当单条或多条记录被误删时,可以通过以下步骤进行恢复: 1. **查找并分析误删语句**: - 首先需要确定哪些数据被误删了。例如,误执行了如下SQL语句:`DELETE FROM user WHERE sex = 'female';` 2. **构造反转SQL语句**: - 使用MySQL的binlog工具来获取误删语句的细节,并构造出反转的SQL语句。例如,可以通过以下命令构造插入语句:`mysqlbinlog -vv binlog_file`。 - 根据输出结果,手动构造反转的SQL语句,如:`INSERT INTO user VALUES (2, 'lulu', 21, 2, '2015-05-29 21:21:07');` #### 二、表、库被误删的恢复 当整个表或者数据库被误删时,可以采取以下步骤进行恢复: 1. **备份当前状态**: - 使用InnoDB的备份工具`innobackupex`进行全量备份:`innobackupex --user=root --password=123456 --defaults-file=XXX (备份目录)` - 执行备份脚本:`./insert_db.sh` 2. **验证数据**: - 连接到数据库,验证数据是否正确:`use db1; select count(*) from t1;` 3. **应用日志**: - 应用redo log:`innobackupex --apply-log (备份目录)` 4. **复制和调整配置文件**: - 复制现成的参数文件:`cp (现成的参数文件) /dbbackup/.` - 修改配置文件:`mv my1.cnf my_3309.cnf` - 编辑配置文件,更改端口和数据文件路径:`vim my_3309.cnf` 5. **启动MySQL服务**: - 启动MySQL服务:`mysqld_safe --defaults-file=/dbbackup/my_3309.cnf &` 6. **查找Binlog位置**: - 查看备份时的Binlog时间点:`cat xtrabackup_binlog_info` 7. **定位Binlog位置**: - 进入Binlog目录:`cd (binlog目录)` - 找到删除表之前的Binlog时间点:`mysqlbinlog -vv (binlog文件) | less` 8. **提取所需Binlog段**: - 提取误删表之前的数据:`mysqlbinlog -vv --start-position=(备份binlog时间点) --stop-position=(删除表上一个binlog时间点) (binlog文件) | mysql -u root -p123456 --socket=(新建3309实例的socket文件)` 9. **验证数据**: - 验证数据是否正确:`use db1; select count(*) from t1;` #### 三、将数据库恢复到指定的时间点 当需要将整个数据库恢复到某个时间点时,可以按照以下步骤操作: 1. **备份当前状态**: - 使用InnoDB的备份工具进行全量备份:`innobackupex --user=root --password=123456 --defaults-file=XXX (备份目录)` - 执行备份脚本:`./insert_db.sh` 2. **验证数据**: - 连接到数据库,验证数据是否正确:`use db1; select count(*) from t1;` 3. **应用日志**: - 应用redo log:`innobackupex --apply-log (备份目录)` 4. **复制和调整配置文件**: - 复制现成的参数文件:`cp (现成的参数文件) /dbbackup/.` - 修改配置文件:`mv my1.cnf my_3310.cnf` - 编辑配置文件,更改端口和数据文件路径:`vim my_3310.cnf` 5. **启动MySQL服务**: - 启动MySQL服务:`mysqld_safe --defaults-file=/dbbackup/my_3310.cnf &` 6. **查找Binlog位置**: - 查看备份时的Binlog时间点:`cat xtrabackup_binlog_info` 7. **定位Binlog位置**: - 进入Binlog目录:`cd (binlog目录)` - 找到需要恢复到的时间点:`mysqlbinlog -vv --start-position=(备份binlog时间点) --stop-datetime="(删除数据前的now()时刻)" (binlog文件) | less` 8. **提取所需Binlog段**: - 提取所需数据:`mysqlbinlog -vv --start-position=(备份binlog时间点) --stop-datetime="(删除数据前的now()时刻)" (binlog文件) | mysql -u root -p123456 --socket=(新建3310实例的socket文件)` 9. **验证数据**: - 验证数据是否正确:`use db1; select count(*) from t1;` 以上步骤提供了完整的解决方案,用于处理MySQL数据库中的误删表或库的问题以及将数据库恢复到指定的时间点。需要注意的是,在执行这些操作之前,应确保有足够的备份,并且对MySQL Binlog有充分的了解,以免造成不可挽回的损失。此外,根据实际情况,可能还需要对上述命令进行适当的调整以适应不同的环境和需求。



















- FongLau2017-11-04这个文档提供了一些“尽量最大化”恢复的方案,但是并不能用于,在没有任何预备工作下的突发应急,数据库恢复的前提是,在正常使用过程中备份
- geqianqing2019-08-27这个真的非常好,借鉴意义蛮大.

- 粉丝: 509
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- IMG_5424.PNG
- 电力电子领域三电平逆变器SVPWM与中点电位平衡调制技术及其MATLABSimulink仿真研究
- IMG_5425.PNG
- IMG_5423.PNG
- 基于遗传算法的'多无人机协同任务分配':种群个体代表完整任务分配方案,以代价函数最小化为目标进行优化 实战版
- COMSOL流热拓扑优化:无量纲化处理多目标优化 - 最大换热,最小耗散
- 电机轮循块(200smart ,梯形图,带注释)
- 基于屋面等值线角点延伸的建筑物三维重构.zip
- 两层无人机的协作移动目标围栏控制与相对测量.zip
- 使用三点分离峰进行无人机建筑足迹正则化.zip
- 利用无人机技术在救援行动中.zip
- 无人机 (UAV) 的粒子过滤器实现,试图在 3D 环境中定位放射源。.zip
- 无人机的人类行为模型。.zip
- 无人机的相同目标相同能力.zip
- 无人机的 GPS 拒绝定位与自适应VIO.zip
- 无人机和基于物联网的牛健康监测系统.zip


