gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:35:30 25 4
gpt4 key购买 nike

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

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

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

在 Postgres 中有这样的可能吗?如果没有,还有其他选择吗? (MySQL?甚至是 sqlite?)

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

由于各种原因,使用并行 dbms 是不可能的,我需要两个并行运行的数据库进程...

非常感谢任何帮助。谢谢!!

最佳答案

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

理论上,可以修改 PostgreSQL 服务器以支持在只读数据库上运行,但目前 AFAIK 不支持此操作。不要指望它会起作用。您需要为每个实例克隆数据目录。

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

您有可能通过以下方式使其正常工作:

  • 将常量数据移动到新的表空间到只读共享存储上
  • 对数据库进行基本备份,减去新分离的共享数据表空间
  • 复制数据库的基础备份以在将运行数据库的每台主机上读/写私有(private)存储
  • 安装共享存储并将表空间链接到 Pg 期望的位置
  • 开始页

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

关于postgresql - 是否可以在写保护的文件系统上运行 Postgres?还是共享文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13296311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com