微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.它不受支持,它没有经过测试,它可能无法工作,运行私有实例没有任何好处,我肯定不会这样做,但如果你真的坚持你可以尝试它.崩溃,错误查询结果和其他奇怪的行为并非不可能.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐