【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】OceanBase_CE 4.3.1.0
【问题描述】
drop table 合并后还可以从sstable中dump出数据,这是为什么?
ob_admin dumpsst -f /home/admin/observer/store/ -d macro_block -a 320 -t 200001 -q
【复现路径】
步骤1: 创建表,并插入数据。
create table t1(id int,col1 varchar(10));
insert into t1 values(1,‘test data’);
commit;
步骤2: 获取表的 tablet_id、macro_id,并用 ob_admin dump 出 sstable 中的数据
1.先获取表的TABLET_ID
select DATABASE_NAME,TABLE_NAME,TABLET_ID from CDB_OB_TABLE_LOCATIONS where table_name=‘t1’ and DATABASE_NAME=‘test’ and tenant_id=1002;
2.触发一次合并,使数据落盘
alter system major freeze tenant=‘my_tenant’;
SELECT * FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION;
3.获得表的MACRO_ID
select TABLET_ID,MACRO_ID_LIST from GV$OB_TABLET_COMPACTION_HISTORY where TABLET_ID=200001 and TYPE=‘MAJOR_MERGE’ order by START_TIME ;
4.使用 ob_admin dump出磁盘中的数据
cd /home/admin/observer
export OB_ADMIN_LOG_DIR=/tmp
ob_admin dumpsst -f /home/admin/observer/store/ -d macro_block -a 320 -t 200001 -q
步骤3:删除表,并dump相同位置的数据
drop table t1;
purge recyclebin;
alter system major freeze tenant=‘my_tenant’;
–确认合并完成后,并超过 undo_retention 时间
export OB_ADMIN_LOG_DIR=/tmp
ob_admin dumpsst -f /home/admin/observer/store/ -d macro_block -a 320 -t 200001 -q