2010-04-18 97 views
3

有没有办法回滚到特定的起点。我正在寻找这样的东西。使用PostgreSQL回滚到特定时刻

启动specific_point;

此后,与SAME登录连接的其他应用程序将插入&删除数据(具有crud操作的web服务) 约2分钟进行测试。每个Web服务调用都被声明为Spring Ws的事务。

之后,我想回滚到specific_point有一个干净的数据库到一个已知的以前的状态。

我在想, ROLLBACK TO SAVEPOINT foo;是解决方案,但不幸的是?

有什么想法?

配置:在PostgreSQL 8.4/Windows XP的

问候

回答

0

这是唯一可能的,如果所有的应用程序共享同一个数据库连接。他们可能不会创建自己的连接。你可以使用连接池来做到这一点,只允许一个连接。如果有人可以创建自己的连接,游戏结束。不同的连接不能共享相同的事务。

1

两个快速选择:

  1. 创建使用主数据库作为模板的临时数据库,完成测试之后删除临时数据库。
  2. Table Log可能有助于实现某些东西。
+0

对于临时数据库+1,但对临时数据库进行测试 - 而不是对活动数据库进行测试。 – Tometzky 2010-04-19 22:00:54

0

SAVEPOINT仅在一个事务内工作,这意味着一个连接。

你可以建立一些PITR,它可以让你做一个恢复到一个特定的时间点。您需要使用基本备份以及归档日志文件,但可以让您前进到特定时间点。它并不像你看起来那么“方便”,但它起作用。

相关问题