Greenplum中删除的表的回滚数据
Posted
技术标签:
【中文标题】Greenplum中删除的表的回滚数据【英文标题】:Rollback data of a table deleted in Greenplum 【发布时间】:2015-02-03 07:46:28 【问题描述】:我使用的是 Greenplum DB 4.3 版本,一个包含我的应用程序元数据信息的表,它被错误地删除了,
有什么办法可以回滚误删的表??
【问题讨论】:
如果delete
已提交,您唯一的机会就是恢复备份。
【参考方案1】:
如果您使用了drop table <tablename>
,那么没有任何帮助 - 表文件在您提交时已从文件系统中删除
如果您使用了delete from <tablename>
,那么您仍然可以访问这些数据。您需要设置 GUC set gp_select_invisible=on
- 这将允许您查看所有已删除的数据。您需要使用字段 xmax 来查找您的交易删除的数据,我的文章简要介绍了它的工作原理:http://0x0fff.com/mvcc-in-transactional-systems/
【讨论】:
【参考方案2】:上述情况我也被困过一次
你也可以检查删除的数据,如果你在参数下面更新
set gp_select_invisible = on
如果真空没有运行比
以下是整个过程
--create a table
create table smpl
( userid integer,
username character varying(35),
password character varying(15),
email character varying(60)
)
--insert some sample date
insert into smpl values(101,'user1','user1','user1@ril.com');
insert into smpl values(103,'user3','user3','user3@ril.com');
insert into smpl values(102,'user2','user2','user2@ril.com');
--Check if data is properly inserted
select *,xmin,xmax,cmin,cmax from smpl
(xmax = 0 表示新插入的数据)
--delete all data
delete from smpl
(xmax 0 表示删除的数据)
--if you update below parameter as ON;you can check the deleted data also
set gp_select_invisible = on
select *,xmin,xmax,cmin,cmax from smpl
--vacuum smpl
(如果您的朗姆酒真空删除的数据将丢失)
--insert some more data with same id
insert into smpl values(101,'user1','user1','user11@ril.com');
insert into smpl values(103,'user3','user3','user13@ril.com');
(用 xmin 和 xmax 值再次检查数据)
--if you set it off;you cant check the deleted data
set gp_select_invisible = off
select *,xmin,xmax,cmin,cmax from smpl
谢谢
【讨论】:
以上是关于Greenplum中删除的表的回滚数据的主要内容,如果未能解决你的问题,请参考以下文章