我是 Amazon RDS 新手。 我正在尝试为我的应用程序创建表空间,但我找不到应该存储它的位置。
可以在 PostgreSQL RDS 中创建表空间吗?
我没有找到与此相关的 RDS 文档,但显然 Postgres 表空间在 RDS 上运行良好。您无权直接访问 RDS 正在使用的底层 EBS 卷,但如果您尝试使用某个任意目录执行 CREATE TABLESPACE 命令:
CREATE TABLESPACE testspace LOCATION '/foo/bar/baz';
您可以看到表空间是这样创建的:
mydb=> \db
List of tablespaces
Name | Owner | Location
------------+------------+-------------------------------------------
pg_default | rdsadmin |
pg_global | rdsadmin |
testspace | db_user | /rdsdbdata/db/base/tablespace/foo/bar/baz
(3 rows)
您应该能够在该表空间中创建表:
mydb=> CREATE TABLE test (a int) TABLESPACE testspace ;
CREATE TABLE
截至 2019 年撰写本文时,RDS 确实支持 PostgreSQL 表空间,但不支持 IO 分割或隔离(因为所有表空间都将在同一卷上创建)。有关此功能的 AWS 文档可以在此处找到。
日志传送/备用服务器之类的东西很大程度上取决于表空间位置。我不会冒险并盲目使用我无法访问且不完全了解的位置(正如乔希建议的那样)
我想我们都必须承认,尽管我们非常喜欢 AWS 服务,但它们在某些方面还是落后的,特别是在针对外部\独立产品(RDS、ECS 上的 Docker 编排等)的 SaaS 解决方案方面
更新: 如果这个post是正确的,Postgres的RDS复制确实依赖于流复制,这使得对表空间路径的任何操作都非常危险,除非您可以在他们的官方文档或通过企业支持中找到这样的策略将始终按您的预期工作。