zoukankan      html  css  js  c++  java
  • 三十二、恢复单库单表

    在生产环境中,我们误删除的表有时会很小,只有10M,而备份很大,假设有500G,以下介绍两种方式恢复单库单表。

    mysqldump恢复单库单表

    从mysqldump全备中获取库和表的sql语句进行恢复,适用于单独库表损坏的情况

    #获得建表语句
    $ sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `city`/!d;q'  full.sql>createtable.sql
    
    #获得INSERT INTO 语句,用于数据的恢复
    $ grep -i 'INSERT INTO `city`'  full.sqll >data.sql &
    
    #获取单库的备份
    $ sed -n '/^-- Current Database: `world`/,/^-- Current Database: `/p' all.sql >world.sql
    

    XBK恢复单表

    这里模拟inc1数据库中t1表误操作被删除的情况,首先要有该表XBK的备份,以及t1表的建表语句,才能单表恢复。

    #首先要有被删除表的建表语句,可以查询以往的备份记录或者查询语句,这里我为了演示方便,并没有删除表,使用命令查看建表语句。
    mysql> show create table t1;
    +-------+-----------------------------------------------------------------------------------------+
    | Table | Create Table                                                                            |
    +-------+-----------------------------------------------------------------------------------------+
    | t1    | CREATE TABLE `t1` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
    +-------+-----------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    
    #模拟故障,删除表t1
    mysql> drop table t1;
    
    #通过上述的建表语句重建表,删除t1表空间
    mysql> alter table t1 discard tablespace;
    
    #复制XBK备份的t1表的ibd,frm文件到data/inc1目录下
    $ cd /backup/xbk/full/inc1/
    $ cp t1.ibd t1.frm /usr/local/mysql5.7/data/inc1/
    
    #更改权限
    $ chown -R mysql.mysql  /usr/local/mysql5.7/data/inc1/
    
    #导入表空间
    mysql> alter table t1 import  tablespace;
    
    #可以查看t1表数据已经恢复了
    mysql> select * from t1;
    

    学习来自:老男孩深标DBA课程 第七章 备份恢复-2,存储引擎

    今天的学习是为了以后的工作更加的轻松!
  • 相关阅读:
    二叉搜索树的第k个结点
    序列化二叉树
    把二叉树打印成多行
    按之字形顺序打印二叉树
    对称的二叉树
    二叉树的下一个结点
    删除链表中重复的结点
    链表中环的入口结点
    字符流中第一个不重复的字符
    基数排序的理解和实现(Java)
  • 原文地址:https://www.cnblogs.com/tz90/p/14608789.html
Copyright © 2011-2022 走看看