内容纲要
概要描述
本文主要介绍,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 会用到。
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"
执行上述操作后,仅在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' );
验证数据正常可查。