加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 15:54:24 所属栏目:百科 来源:网络整理
导读:我正在尝试建立一个分布式处理环境, 所有数据都位于一个共享网络驱动器中. 我不会写任何东西,只是从中读取, 所以我们也在考虑对网络驱动器进行写保护. 我记得当我使用MSSQL时, 我可以将数据库备份到DVD并直接将其作为只读数据库加载. 如果我能在Postgres做类
我正在尝试建立一个分布式处理环境,
所有数据都位于一个共享网络驱动器中.
我不会写任何东西,只是从中读取,
所以我们也在考虑对网络驱动器进行写保护.

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

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

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

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

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

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

解决方法

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读