holodesk表drop之后如何恢复

  其他常见问题
内容纲要

概要描述


本文主要介绍,holodesk表在做了drop误删操作之后,如何恢复,仅供参考。

一般来说,holodesk表的自动清理策略,每1小时清理7天之前的回收站文件:
CLEAN_TRASH_TIME_PERIOD_S:数值类型,表示清理回收站定时任务触发周期,单位为秒,最小配置600,默认值3600s,也就是1小时;
TABLE_KEEP_IN_TRASH_TIME_S:数值类型,表示处于回收站中表的最小保留时间,单位为秒,最小配置600,默认值604800s,也就是7天;

解决方案


测试环境:Argodb5.2.3 (quark 8.31.2 + tddms 2.3.4)

1.创建样例表,并插入一条数据

CREATE TABLE EMP_HOLO(
    EMPNO int,
    ENAME string,
    JOB string,
    MGR INT,
    HIREDATE DATE,
    SAL INT,
    COMM INT,
    DEPTNO INT
)CLUSTERED BY (empno) INTO 3 BUCKETS
STORED AS HOLODESK;

INSERT INTO EMP_HOLO VALUES (7369,'SMITH','CLERK',7902,tdh_todate('17-12-1980','dd-mm-yyyy'),800,NULL,20);

2. 将表DROP掉

DROP TABLE IF EXISTS EMP_HOLO;

3. 记录表的table id和table name

可以到 TDDMS Webserver – 库表 – Trash 页面,根据 Table Name搜到对应的表。
也可以通过curl命令获取

TABLE id : a62545e5f4b6475a8841c729d7dc6ee3
TABLE name : default.emp_holo_a80df0bb-ea03-495d-a5ac-a73d09ca8f5f

记下来,step4 会用到。

file

4. curl命令restore trash

curl  -u shiva:shiva -X PUT "172.22.23.2:4567/trash?table_id=a62545e5f4b6475a8841c729d7dc6ee3&new_table_name=default.emp_holo_a80df0bb-ea03-495d-a5ac-a73d09ca8f5f"

file

执行上述操作后,仅在shiva中恢复了表,但是metastore中并不感知表已经恢复了,需要执行下面的sql语句来映射好meta信息

5. 通过tblproperties关联shiva表

--重建该表
CREATE TABLE EMP_HOLO(
       EMPNO int,
       ENAME string,
       JOB string,
       MGR INT,
       HIREDATE DATE,
       SAL INT,
       COMM INT,
       DEPTNO INT
)CLUSTERED BY (empno) INTO 3 BUCKETS
STORED AS HOLODESK;

将前面的Table name放置到下面的holodesk.tablename属性里面去
ALTER TABLE EMP_HOLO SET TBLPROPERTIES ('holodesk.databasename'='default', 'holodesk.tablename'='emp_holo_a80df0bb-ea03-495d-a5ac-a73d09ca8f5f' );

验证数据正常可查。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。