今天眼疾手快 不小心删了公司生产环境的表 而且碰巧这个数据没有备份的 当时哥们就呆住 还好doris升级过1.2 刚推出了恢复数据的功能~~~~~这里给老天爷磕一个了~~~~~~
数据删除恢复
Doris为了避免误操作造成的灾难,支持对误删除的数据库/表/分区进行数据恢复,在drop table或者 drop database之后,Doris不会立刻对数据进行物理删除,而是在 Trash 中保留一段时间(默认1天,可通过fe.conf中catalog_trash_expire_second
参数配置),管理员可以通过RECOVER命令对误删除的数据进行恢复。
开始数据恢复
1.恢复名为 example_db 的 database
RECOVER DATABASE example_db;
2.恢复名为 example_tbl 的 table
RECOVER TABLE example_db.example_tbl;
3.恢复表 example_tbl 中名为 p1 的 partition
RECOVER PARTITION p1 FROM example_tbl;
我的情况还更棘手! 我还是删除后又立马心虚地建了这张表 导致recover的是我建的这张空表~
连我的小chatgpt都跟不上时代的步伐!
于是我打开了doris技术文档:RECOVER - Apache Doris
找到了指定哪张表恢复的方法!
首先可以通过 SHOW CATALOG RECYCLE BIN
来查询当前可恢复的元信息。
然后可以看到具体的tableid
于是在后面跟上它的元数据信息即可!
recover table dwd_tms_vesselschedule_basicinfo_transitport_df 3066881
以下是所有的例子:
-
以name恢复 database
RECOVER DATABASE db_name;
-
以name恢复 table
RECOVER TABLE [db_name.]table_name;
-
以name恢复 partition
RECOVER PARTITION partition_name FROM [db_name.]table_name;
-
以name和id恢复 database
RECOVER DATABASE db_name db_id;
-
以name和id恢复 table
RECOVER TABLE [db_name.]table_name table_id;
-
以name和id恢复 partition
RECOVER PARTITION partition_name partition_id FROM [db_name.]table_name;
-
以name恢复 database 并设定新名字
RECOVER DATABASE db_name AS new_db_name;
-
以name和id恢复 table 并设定新名字
RECOVER TABLE [db_name.]table_name table_id AS new_db_name;
-
以name和id恢复 partition 并设定新名字
RECOVER PARTITION partition_name partition_id AS new_db_name FROM [db_name.]table_name;
说明:
- 该操作仅能恢复之前一段时间内删除的元信息。默认为 1 天。(可通过fe.conf中
catalog_trash_expire_second
参数配置) - 如果恢复元信息时没有指定id,则默认恢复最后一个删除的同名元数据。
- 可以通过
SHOW CATALOG RECYCLE BIN
来查询当前可恢复的元信息。
Example
- 恢复名为 example_db 的 database
RECOVER DATABASE example_db;
2. 恢复名为 example_tbl 的 table
RECOVER TABLE example_db.example_tbl;
3. 恢复表 example_tbl 中名为 p1 的 partition
RECOVER PARTITION p1 FROM example_tbl;
4. 恢复 example_db_id 且名为 example_db 的 database
RECOVER DATABASE example_db example_db_id;
5. 恢复 example_tbl_id 且名为 example_tbl 的 table
RECOVER TABLE example_db.example_tbl example_tbl_id;
6. 恢复表 example_tbl 中 p1_id 且名为 p1 的 partition
RECOVER PARTITION p1 p1_id FROM example_tbl;
7. 恢复 example_db_id 且名为 example_db 的 database,并设定新名字 new_example_db
RECOVER DATABASE example_db example_db_id AS new_example_db;
8. 恢复名为 example_tbl 的 table,并设定新名字 new_example_tbl
RECOVER TABLE example_db.example_tbl AS new_example_tbl;
9. 恢复表 example_tbl 中 p1_id 且名为 p1 的 partition,并设定新名字 new_p1
RECOVER PARTITION p1 p1_id AS new_p1 FROM example_tbl;