我有一个特定的架构来设置postgresql .

我有一个基于两个数据库N和N 1的系统 .

数据库N可用于只读模式的客户端,数据库N 1可用于客户端的修改 . 客户端还可以向系统发送两个命令:

  • "apply"命令:保留对N 1 db进行的所有修改,并且系统的新状态是具有N 1数据和具有相同数据的N 2 db的只读数据库 .

  • A "reset"命令:删除N 1 db并为用户创建N数据库的新副本以进行写入访问 .

我的第一个想法是将两个数据库保存在postgresql的实例中,并在apply或reset命令上执行pg_dump和pg_restore命令,并将数据库重命名为apply(N 1 - > N) . db可能达到8 Go的大小,因此我目前正在Centos 6.7 vm上执行此类转储和恢复的测试 .

然后我查看了pg_basebackup命令,以设置一个只读的热备用数据库 . 问题是这样的体系结构基于从主设备到从设备的数据复制的想法,这是我不想要的,因为客户端可以请求将丢弃N 1 db的重置命令 .

问题是我不知道基于每日转储/恢复的系统是否可行,或者是否有postgresql是一种简单的方法来处理具有相同模式的两个数据库并“检测并应用”两者之间的差异:有了这种能力,我将能够在应用命令时将N 1复制到N只有区别,而与复位命令相反 .

任何的想法 ?