加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

删库不跑路-详解MySQL数据恢复

发布时间:2019-08-21 01:22:35 所属栏目:MySql教程 来源:程淇铭
导读:副标题#e# 日常工作中,总会有因手抖、写错条件、写错表名、错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA。 1 前言 数据恢复的前提的做好备份,且开启 binlog, 格式为 row。如果没有备份文件,那么删掉库表后就真

然后执行恢复

  1. # 全量恢复  
  2. [mysql@mysql-test ~]$ mysql -S /tmp/mysql.sock < backup.sql   
  3. # 应用增量日志  
  4. [mysql@mysql-test ~]$ mysql -S /tmp/mysql.sock < backup_inc.sql  
  5. 检查数据  
  6. chengqm-3306>>select count(*) from mytest.mytest;  
  7. +----------+  
  8. | count(*) |  
  9. +----------+  
  10. |      161 |  
  11. +----------+  
  12. 1 row in set (0.00 sec)  
  13. chengqm-3306>>select * from mytest.mytest order by id desc limit 5;  
  14. +-----+---------------------+  
  15. | id  | ctime               |  
  16. +-----+---------------------+  
  17. | 161 | 2019-08-09 11:01:53 |  
  18. | 160 | 2019-08-09 11:01:52 |  
  19. | 159 | 2019-08-09 11:01:51 |  
  20. | 158 | 2019-08-09 11:01:50 |  
  21. | 157 | 2019-08-09 11:01:49 |  
  22. +-----+---------------------+  
  23. 5 rows in set (0.00 sec) 

已经恢复到 2019-08-09 11:01:54 这个时间点

3 恢复一个表

3.1 从mysqldump备份恢复一个表

假设要恢复的表是 mytest.mytest

  1. # 提取某个库的所有数据  
  2. sed -n '/^-- Current Database: `mytest`/,/^-- Current Database:/p' backup.sql > backup_mytest.sql  
  3. # 从库备份文件中提取建表语句  
  4. sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `mytest`/!d;q' backup_mytest.sql > mytest_table_create.sql  
  5. # 从库备份文件中提取插入数据语句  
  6. grep -i 'INSERT INTO `mytest`' backup_mytest.sql > mytest_table_insert.sql  
  7. # 恢复表结构到 mytest 库  
  8. mysql -u<user> -p mytest < mytest_table_create.sql  
  9. # 恢复表数据到 mytest.mytest 表  
  10. mysql -u<user> -p mytest <  mytest_table_insert.sql 

3.2 从xtrabackup备份恢复一个表

假设 ./backup_xtra_full 目录为解压后应用过日志的备份文件

3.2.1 MyISAM 表

假设从备份文件中恢复表 mytest.t_myisam,从备份文件中找到 t_myisam.frm t_myisam.MYD t_myisam.MYI 这 3 个文件,复制到对应的数据目录中,并授权

进入 MySQL,检查表情况

  1. chengqm-3306>>show tables;  
  2. +------------------+  
  3. | Tables_in_mytest |  
  4. +------------------+  
  5. | mytest           |  
  6. | t_myisam         |  
  7. +------------------+  
  8. 2 rows in set (0.00 sec)  
  9. chengqm-3306>>check table t_myisam;  
  10. +-----------------+-------+----------+----------+  
  11. | Table           | Op    | Msg_type | Msg_text |  
  12. +-----------------+-------+----------+----------+  
  13. | mytest.t_myisam | check | status   | OK       |  
  14. +-----------------+-------+----------+----------+  
  15. 1 row in set (0.00 sec) 

3.2.2 Innodb 表

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读