有没有办法回滚到特定的起点。 我正在寻找这样的东西。
启动specific_point;
此后,与SAME登录相关联的其他应用程序将插入&删除数据(带有crud操作的webservices) 大约2分钟做测试。每个webservice调用都被声明为Spring Ws的事务。
之后我想回滚到specific_point以使干净的数据库达到已知的先前状态。
我在想 ROLLBACK TO SAVEPOINT foo;是解决方案,但不幸的是不是吗?
有什么想法吗?
配置:PostgreSQL 8.4 / windows XP
此致
答案 0 :(得分:1)
两个快速选项:
答案 1 :(得分:0)
仅当所有应用程序共享相同的数据库连接时,才可以执行此操作。他们可能不会创建自己的连接。您可以使用连接池执行此操作,只允许一个连接。如果有人可以创建它自己的连接,游戏结束。不同的连接不能共享同一个事务。
答案 2 :(得分:0)
SAVEPOINT仅在一个事务中起作用,这意味着一个连接。
您可以在PITR上构建一些东西,它可以让您在特定时间点执行恢复。您需要一个基本备份才能使用,以及存档的日志文件,但这可以让您前滚到特定的时间点。它并不像你想要的那样“方便”,但它有效。
答案 3 :(得分:0)
我认为类似的要求是出于测试目的。
有以下选择:
在特定时刻,断开所有用户与数据库的连接并对其进行克隆:
CREATE DATABASE mydb_template
TEMPLATE mydb
ALLOW_CONNECTIONS FALSE
IS_TEMPLATE TRUE;
然后让测试完成工作。
要还原数据库,请断开每个人的连接并运行
CREATE DATABASE mydb TEMPLATE mydb_template;