Trafodion恢复误删表数据

本文介绍如何在六分钟内从HDFS备份中恢复误删的Trafodion表,包括备份数据、创建表、拷贝数据、修改权限及修复元数据的详细步骤。

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

误删Trafodion表的恢复

  1. 假设存在test_pope_delete表,并且表中存在两条记录(你可以通过如下的示例语句进行模拟)
    示例:
    create table test_pope_delete(id int, name varchar(32));
    insert into test_pope_delete values(1, 'andy');
    insert into test_pope_delete values(1, 'ruo');
  1. 假设test_pope_delete表被误操作删掉(你可以通过如下的示例语句进行模拟表被误删除)
    示例:
    drop table test_pope_delete;
  1. 恢复被误删除的表
    实际在测试的过程中,删除一个trafodion表,在hdfs上/hbase/archive文件夹中,会立即发现删除表的所有region数据(不包含regioninfo、tabledesc等元数据文件),等待不到6分钟所有数据消失,说明所有数据生命周期结束,被删除。(注意:hbase.master.hfilecleaner.ttl控制/hbase/archive中数据的存活周期)。
    因为删除表的清理周期是6分钟左右,那么如果发现表数据被误删除了,需要在6分钟内把/hbase/archive中对应的表的数据备份起来用于恢复。如果6分钟过后没有备份误删除的数据,那么数据将不能恢复。
    恢复步骤如下:

备份被删除的数据到本地:

     hdfs dfs -copyToLocal /hbase/archive/data/TRAF_RSRVD_3/TRAFODION.SEABASE.TEST_POPE_DELETE .

创建trafodion表:

    create table test_pope_delete(id int, name varchar(32));

把备份的数据拷贝到新创建的表对应的目录(注意:6d0e1bf5c72afcf5b25873fd542e5f93 为region的名称,每个表的名称可能不同):

   hdfs dfs -copyFromLocal 6d0e1bf5c72afcf5b25873fd542e5f93 /hbase/data/TRAF_RSRVD_3/TRAFODION.SEABASE.TEST_POPE_DELETE/

修改新拷贝数据文件权限:

    hdfs dfs -chown -R hbase:hbase /hbase/data/TRAF_RSRVD_3/TRAFODION.SEABASE.TEST_POPE_DELETE/6d0e1bf5c72afcf5b25873fd542e5f93

修复元数据(注意:-repair内部的执行顺序可能不对,执行一遍失败,多执行几遍,成功。):

    sudo -u hbase hbase hbck -repair

查询恢复后的数据(可以查询到误删之前的两条数据):

    trafci
    select * from test_pope_delete;

数据恢复成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值