postgresql – 是否可以在写保护的文件系统上运行Postgres?还是共享文件系统?

我正在尝试建立一个分布式处理环境,
所有数据都位于一个共享网络驱动器中.
我不会写任何东西,只是从中读取,
所以我们也在考虑对网络驱动器进行写保护.

我记得当我使用MSsql时,
我可以将数据库备份到DVD并直接将其作为只读数据库加载.

如果我能在Postgres做类似的事情,
我应该能够给它一个像只读DVD的抽象,
一切都会好的.

Postgres有可能是这样的,
如果没有,任何替代方案? (MySQLsqlite甚至?)

或者如果那不可能有某种方法来指定共享文件系统?
(让它知道其他进程也在读取它吗?)

由于各种原因,无法使用并行dbms,
我需要两个并行运行的DB进程…

任何帮助是极大的赞赏.
谢谢!!

解决方法

写保护数据目录将导致Postgresql无法启动,因为它需要能够编写postmaster.pid. Postgresql还需要能够编写临时文件和表空间,设置提示位,管理可见性映射等.

从理论上讲,可能会修改Postgresql服务器以支持在只读数据库上运行,但现在不支持AFAIK.不要指望它能起作用.您需要克隆每个实例的数据目录.

如果您出于性能原因要运行多个Postgresql实例,那么让它们争夺共享存储将无论如何都会适得其反.如果DB足够小以适应RAM,那就没关系……但是在这种情况下,将它克隆到每台机器也很容易.如果数据库不够大,无法缓存在RAM中,那么两个数据库实例都会出现I / O瓶颈,并且不会比不受存储争用影响的单个数据库执行任何更好的(可能略差).

您可以通过以下方式获得它的工作机会:

>将常量数据移动到新的表空间到只读共享存储上
>获取数据库的基础备份,减去新分离的共享数据表空间
>复制数据库的basebackup,以便在运行数据库的每台主机上读/写私有存储
>挂载共享存储并将表空间链接到Pg期望的位置
>开始pg

…至少如果你首先在共享表空间强制提示位设置和VACUUM FREEZE.它不受支持,它没有经过测试,它可能无法工作,运行私有实例没有任何好处,我肯定不会这样做,但如果你真的坚持你可以尝试它.崩溃,错误查询结果和其他奇怪的行为并非不可能.

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...