Zil*_*ilk 58 postgresql snapshot restore
首先,我是一名开发人员,而不是 DBA 或系统管理员;请温柔:)
我正在开发一个应用程序工作流,其中单个用户操作将触发数据库中的复杂更改 - 在某些表中创建数百条记录,在其他表中更新数百条记录,等等。总而言之,大约 12 个表(大约 100 ) 被这个动作感动了。由于复杂性,我很难在运行另一个测试之前手动恢复所有更改。在我的大部分开发时间中,我可以简单地在工作流末尾插入一个“ROLLBACK”语句,但是当我接近提交我的更改时,我需要测试真实的东西。
我有要使用的生产数据库的本地副本。就我而言,测试之间的转储和恢复比编写脚本来撤消所有更改要快。它更快,但它仍然让我慢了很多(在我老化的笔记本电脑上恢复大约需要 20 分钟)。有什么办法可以保存数据库当前状态的快照,然后快速恢复它?
我保证是系统上唯一的用户,并且我有 root 访问权限。tar'ed 和 gzip'ed 后,数据库转储约为 100MB。PostgreSQL 版本是 8.3。
在此先感谢您提供任何有用的想法。
Pet*_*aut 42
您可以使用文件系统级快照,但这通常非常麻烦,需要特殊的文件系统,而且并不总是可用,尤其是在老化的笔记本电脑上。;-)
您如何将基本状态创建为数据库,然后使用该CREATE DATABASE ... TEMPLATE功能从中创建一个新数据库用于测试运行。测试后,您将该数据库扔掉。那么你的速度限制本质上只是到cp -R数据库目录的时间。这与没有文件系统快照魔法的情况一样快。
小智 5
如果您的数据库在Virtualbox 中运行,您可以在几秒钟内轻松保存快照并恢复数据库状态和操作系统本身的快照(如果您的数据库或操作系统中确实有大量数据,则需要 1-2 分钟)分配给虚拟机的内存很少)免费。
在您/大多数情况下,最好安装一个轻量级的 linux(而不是 Windows 服务器)来运行托管数据库的虚拟机,因为您提到您的笔记本电脑上几乎没有可用的资源。
在生产站点上,我使用MediaTemple的快照备份来实现相同的结果(但每个备份槽为 20 美元,并且特定于该虚拟主机服务,因此可能不适合您)。
| 归档时间: |
|
| 查看次数: |
28269 次 |
| 最近记录: |