使用 Postgres 多模式有多安全?

abh*_*7in 6 postgresql heroku database-administration

Heroku 警告在 Postgres 中使用多个模式。但没有具体说明numerous operational problems原因。

\n\n

正如 Heroku 文档上发布的:

\n\n
\n

在数据库中使用多个架构的最常见用例是构建软件即服务应用程序,其中每个客户都有自己的架构。虽然这种技术看起来很有吸引力,但我们强烈建议不要使用它,因为它已经导致了许多操作问题。例如,即使是中等数量的模式 (> 50) 也会严重影响 Heroku\xe2\x80\x99s 数据库快照工具 PG 备份的性能。

\n
\n\n

我认为,备份的问题可以通过添加follower db来解决。

\n\n

60每个模式都有表,因此对于1000模式我将有60,000表。这将如何影响数据库性能?扩展时我会遇到哪些类型的问题?

\n

Ran*_*ger 3

运行大量模式和/或表的第一个问题通常不会干扰正在运行的数据库。操作员遇到的主要问题是他们无法创建数据库的逻辑备份。与手动运行一样,运行heroku pg:backups可能会失败pg_dump。通常,您会在尝试的备份日志中看到以下错误:

ERROR: out of shared memory HINT: You might need to increase max_locks_per_transaction
Run Code Online (Sandbox Code Playgroud)

所需的大量锁最终会导致数据库出现 OOM 情况。这在 Heroku 上并不总是一个问题。如果您使用的是生产数据库,则可以依靠其时间点恢复选项作为灾难恢复解决方案。话虽这么说,如果您无法运行逻辑备份,从 Heroku 导出数据将会很困难,因为它们当前不支持外部复制。虽然不太理想,但假设您可以尝试按架构转储数据库架构以避免 OOM 情况。

  • 除了生产中运行的应用程序的逻辑备份之外,您还能预见到任何其他问题吗? (2认同)