Snowflake Postgres 实例管理¶
Snowflake Postgres 提供多种实例管理操作,帮助您管理实例。这些操作属于维护形式,旨在确保实例持续运行和安全稳定。
执行实例管理操作需要短暂的服务中断。 请确保您的应用程序能够自动重新连接到数据库。
备注
除非您明确轮换凭证,否则实例的连接字符串在实例管理操作期间将保持不变。
为确保实例健康运行,我们可能会代表您安排维护操作(例如 修改 实例存储大小)。
有关平台如何执行实例维护的详细说明,请参阅 Snowflake Postgres 维护。
可用操作¶
在控制台的实例详情页面中,Manage 下拉菜单提供以下操作:
分支 – 从现有实例创建新实例
修改 – 更改实例的计算规格、存储大小或 Postgres 版本
启用高可用性 – 为实例启用高可用性
创建副本 – 创建实例的副本
实例暂停与恢复 – 停止 Postgres 服务器但保留磁盘上的数据
重新启动服务 – 重新启动 PostgreSQL 或整个底层服务器
重新生成凭据 – 重新生成实例的凭据
分支¶
You can fork an instance to create a new instance from an existing instance, optionally choosing a point in time to fork from. By default the new instance will be forked from the current state of the source instance. Read more about forking in Snowflake Postgres 时间点恢复.
修改¶
要更改现有 Snowflake Postgres 实例的配置,您必须使用已被授予该实例 OWNERSHIP 或 OPERATE 权限的角色。
您可以在影响最小且不更改连接字符串的情况下,就地调整实例大小。在实例调整大小期间,您可以:
将 COMPUTE_FAMILY 更改为不同规格。
更改存储容量。支持增加或减少存储大小。
将 Postgres 版本升级至较新的主要版本。
修改实例配置需要进行维护。有关更多信息,请参阅 Snowflake Postgres 维护。
要进行更改,请执行以下操作:
在导航菜单中,选择 Postgres。
选择您的实例。
在右上角的 Manage 菜单中,选择 Modify。
从下拉菜单中选择新的 COMPUTE_FAMILY 和/或存储大小。有关更改 Postgres 版本的详细信息,请参阅 Postgres 主要版本升级。
选择 Save 按钮确认更改。
运行 ALTER POSTGRES INSTANCE 命令以更改 Snowflake Postgres 实例的配置。
备注
对实例的更改将以异步操作方式应用。
要检查操作的状态,请运行 DESCRIBE POSTGRES INSTANCE 命令。
ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> SET [ NETWORK_POLICY = <policy_name> ] [ COMMENT = '<string_literal>' ] [ HIGH_AVAILABILITY = { TRUE | FALSE } ] [ COMPUTE_FAMILY = <compute_family> ] [ STORAGE_SIZE_GB = <storage_gb> ] [ POSTGRES_VERSION = { 16 | 17 } ]; [ MAINTENANCE_WINDOW_START = <hour_of_day> ] [ POSTGRES_SETTINGS = '<json_string>'] [ APPLY { IMMEDIATELY | ON '<timestamp>' } ] ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> UNSET { COMMENT | POSTGRES_SETTINGS | NETWORK_POLICY | MAINTENANCE_WINDOW_START } [ , ... ]
NETWORK_POLICY = policy_name指定用于实例的 网络策略。 策略更改可能需要最多 2 分钟才能生效。
要指定此参数,您必须已被授予 NETWORK_POLICY 对象的 USAGE 权限。
HIGH_AVAILABILITY = { TRUE | FALSE }为实例启用 Snowflake Postgres 高可用性 高可用性。该操作以异步方式执行。可通过 DESCRIBE 在 operations 字段中跟踪其进度。仅当实例处于 READY 状态时方可发起 HA 变更,且如果有其他操作正在运行(包括启用/禁用 HA)则无法发起。
默认:
FALSECOMPUTE_FAMILY = compute_family.STORAGE_SIZE_GB = storage_gb.POSTGRES_VERSION = 16 | 17
这些操作统称为“升级”操作,将一并执行。可通过
DESCRIBE POSTGRES INSTANCE在 operations 字段中跟踪其进度。仅当实例处于 READY 状态时方可发起升级操作,且如果有其他操作正在运行则无法发起。
如果实例已定义维护时段,则更改将在维护时段期间生效,除非已指定
APPLY IMMEDIATELY以替换维护时段。POSTGRES_SETTINGS = 'json_string'指定实例的 Postgres 设置 更改。 通过以下结构的 JSON 格式字符串指定设置:
'{"component:name" = "value", ...}'部分 Postgres 设置的更改可能需要重新启动实例才能生效。除非您在 ALTER POSTGRES INSTANCE 语句中指定
APPLY IMMEDIATELY,否则这些更改不会生效。 有关需要重新启动的设置列表,请参阅 Postgres 设置。MAINTENANCE_WINDOW_START = hour_or_day维护时段可能开始的期望小时时间。应为 0 至 23 的整数,表示允许开始维护的小时时间,其中 0 代表 UTC 午夜零点。维护时段为从指定小时开始的三小时时段。取消已设置的维护时段将导致所有进行中的操作在完成后立即应用。
APPLY IMMEDIATELY如果集群具有已定义的维护时段,
APPLY IMMEDIATELY将替换维护窗口,使所有指定的操作在准备就绪后立即应用。APPLY IMMEDIATELY仅适用于COMPUTE_FAMILY、STORAGE_SIZE_GB、POSTGRES_VERSION和POSTGRES_SETTINGS。 对于所有其他选项,它将被忽略。APPLY ON 'timestamp'如果集群具有已定义的维护时段,
APPLY ON将替换维护时段,使所有指定的操作在提供的时间戳应用。APPLY IMMEDIATELY不可与POSTGRES_SETTINGS同时指定。指定的时间戳不得超过未来 72 小时,且可采用以下格式之一:
yyyy-MM-dd
yyyy-MM-dd HH:mm
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd HH:mm zzz
修改 Postgres 实例示例
通过单次操作将现有实例的 COMPUTE_FAMILY 更改为 STANDARD_M 并将存储大小更改为 100GB:
ALTER POSTGRES INSTANCE my_instance
SET COMPUTE_FAMILY = 'STANDARD_M'
STORAGE_SIZE_GB = 100;
如果您计划减少实例的存储大小,请注意:我们当前要求调整后的存储容量大于或等于当前磁盘使用量的 1.4 倍,以减少告警并避免立即触发扩容。
Postgres 主要版本升级¶
Snowflake Postgres 允许您通过仪表板安排主要版本升级。进行此更改的操作流程与实例调整大小相同。 将实例升级到新的主要版本需要进行维护。关于维护的通用信息,请参阅 Snowflake Postgres 维护;关于主要版本升级的具体信息,请参阅下文。
要发起主要版本升级,您必须使用已被授予该实例 OWNERSHIP 或 OPERATE 权限的角色。
备注
您只能升级到较新的主要版本,无法降级到先前的主要版本。
备注
您可以将主要版本升级与实例调整大小结合进行,同时选择新的实例规格和/或存储大小。
在导航菜单中,选择 Postgres。
选择您的 Snowflake Postgres 实例。
在右上角的 Manage 菜单中,选择 Modify。
如果有可用新版本,您将可从 Postgres 版本下拉菜单中进行选择。
选择 Save 按钮以确认更改。
您可以通过执行 ALTER POSTGRES INSTANCE 命令并设置 POSTGRES_VERSION 参数为目标版本来发起主要版本升级。
ALTER POSTGRES INSTANCE [IF EXISTS] <name>
SET POSTGRES_VERSION = { 16 | 17 }
POSTGRES_VERSION = { 16 | 17 }要升级到的目标 Postgres 版本。
示例:将现有实例升级至 PostgreSQL 17
ALTER POSTGRES INSTANCE my_instance
SET POSTGRES_VERSION = 17;
示例:将主要版本升级与存储容量扩容结合进行
ALTER POSTGRES INSTANCE my_instance
SET POSTGRES_VERSION = 17
STORAGE_SIZE_GB = 100;
Postgres 主要版本升级的运作方式与其他实例管理操作不同。启动该过程后,Snowflake Postgres 将执行以下步骤:
创建当前实例的“隐藏”副本(对用户不可见)。
将源实例的现有数据迁移至隐藏副本(耗时与数据量相关)。
当维护时段到达时:
锁定源实例以防止写入。
升级隐藏副本(耗时取决于数据库中的 对象数量,而非数据量)。
升级完成后,故障切换到新升级的实例。
重要注意事项:
主要版本变更可能会影响应用程序兼容性。我们建议在升级前,将您的应用程序在新 PostgreSQL 版本上进行测试。
执行主版本升级时,读取副本将自动升级,但仅在其主实例升级完成且完成新备份后才会进行。在此之前,副本将保持可用,但处于过时状态。
如果您没有设置维护时段且未指定运行时间,升级将在新实例准备就绪后立即开始。
此操作会造成服务中断,预计持续时间不超过几分钟。
如果升级失败,您的实例将自动回退至原始实例。
启用高可用性¶
启用高可用性 (HA) 后,您的实例将包含一个备用主机,当主主机不可用时,备用主机会接替其工作。 您可以在 Snowflake Postgres 高可用性 阅读更多相关内容。
创建副本¶
您可以从仪表板创建实例的副本。副本是源实例的只读副本,与源实例保持同步。有关创建和使用副本的更多信息,请参阅 Snowflake Postgres 只读副本。
实例暂停与恢复¶
暂停实例会停用其所运行的虚拟机,同时保留其在存储中的磁盘映像,以便后续恢复实例。实例的常规计费会暂停,但存储成本将继续产生。现有的 10 天备份也会保留。
若有待重启才能应用的操作,这些操作将在实例恢复时应用。
要暂停或恢复 Snowflake Postgres 实例,您必须使用已被授予该实例 OWNERSHIP 或 OPERATE 权限的角色。
要暂停 Snowflake Postgres 实例,请运行 ALTER POSTGRES INSTANCE ... SUSPEND:
ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> SUSPEND
这些操作是异步的。可使用 DESCRIBE 命令跟踪这些操作的状态。
示例:暂停名为 my_instance 的 Snowflake Postgres 实例
ALTER POSTGRES INSTANCE my_instance SUSPEND;
您随时可以恢复已暂停的实例。恢复实例所需的时间取决于实例及其数据集的大小。恢复实例后,常规计费和备份也将重新开始。
要恢复 Snowflake Postgres 实例,请运行 ALTER POSTGRES INSTANCE ... RESUME:
ALTER POSTGRES INSTANCE [ IF EXISTS ] <name> RESUME这些操作是异步的。可使用 DESCRIBE 命令跟踪这些操作的状态。
示例:恢复名为 my_instance 的 Snowflake Postgres 实例
ALTER POSTGRES INSTANCE my_instance RESUME;
重新启动服务¶
如有需要,您可以重新启动 PostgreSQL 或者运行 Postgres 实例的底层服务器。这类实例管理操作将就地重新启动服务器,不会创建副本或执行故障切换。有关重新启动服务的更多信息,请参阅 Snowflake Postgres 维护。
重新生成凭据¶
重新生成凭据将为数据库实例返回一个新的连接字符串,并替换现有凭据。有关此主题的更多信息,请参阅 Snowflake Postgres 角色。
自定义配置参数¶
您可以为 Snowflake Postgres 实例更改许多 Postgres 自身的服务器设置。可用配置参数列表请参阅 Snowflake Postgres 服务器设置。
要更改 Snowflake Postgres 实例的 Postgres 设置,您必须使用已被授予该实例 OWNERSHIP 或 OPERATE 权限的角色。
要进行更改,请执行以下操作:
在导航菜单中,选择 Postgres。
选择您的实例
在页面右侧选择 Custom parameters 旁边的编辑图标
从列表中选择配置参数,或使用搜索框查找特定参数
输入配置参数的新值。
为参数添加新值后,点击 Continue to review,然后点击 Submit 以确认更改。
ALTER POSTGRES INSTANCE [IF EXISTS] <name>
SET POSTGRES_SETTINGS = '{JSON_string}'
[ APPLY IMMEDIATELY ];
POSTGRES_SETTINGS = 'json_string'指定实例的 Postgres 设置 更改。 通过以下结构的 JSON 格式字符串指定设置:
'{"component:name" = "value", ...}'部分 Postgres 设置的更改可能需要重新启动实例才能生效。除非您在 ALTER POSTGRES INSTANCE 语句中指定
APPLY IMMEDIATELY,否则这些更改不会生效。 有关需要重新启动的设置列表,请参阅 Postgres 设置。
Example: Set the work_mem configuration parameter to 128MB for a Snowflake Postgres instance named my_instance
ALTER POSTGRES INSTANCE my_instance SET POSTGRES_SETTINGS = ( 'work_mem' = '128MB' );
实例状态¶
任何实例管理操作,无论是创建新实例还是修改现有实例,都需要一定时间才能完成。具体耗时取决于多种因素,包括您的数据和架构大小,以及实例的繁忙程度。实例的状态可帮助您了解正在进行操作的进度。状态会在仪表板中显示,您也可以通过运行 DESCRIBE POSTGRES INSTANCE 命令查看。
下方列出了可能的实例状态。在实例修改操作期间,替换实例将经历第一张表中列出的所有状态。正在创建的新实例则会经历部分(而非全部)所列状态。下表列出了您在常规操作中可能看到的其他状态。
创建、修改和分支期间出现的状态:
状态 |
当前操作 |
典型耗时 |
下一状态 |
|---|---|---|---|
正在创建 |
正在创建新的底层服务器 |
1-2 分钟 |
正在恢复 |
正在恢复 |
正在将最新基础备份恢复到服务器 |
变量 |
正在启动 |
正在启动 |
正在实例上启动 Postgres,并应用基础备份期间累积的 WAL |
变量 |
正在重放 |
正在重放 |
正在重放自上次基础备份以来累积的 WAL |
变量 |
正在完成 |
正在完成 |
正在完成实例配置并使服务器可用 |
1-2 分钟 |
就绪 |
就绪 |
新实例与源实例匹配,已准备就绪可继续执行操作。如果安排在即将到来的维护时段,实例将保持 |
不适用 |
不适用 |
您可能在平台上看到的其他实例状态:
状态 |
当前操作 |
典型耗时 |
下一状态 |
|---|---|---|---|
正在重新启动 |
正在重新启动底层服务器 |
1-2 分钟 |
就绪 |
正在恢复 |
正在构建新服务器并恢复已暂停的实例 |
3-5 分钟 |
就绪 |
正在暂停 |
实例正在暂停 |
3-5 分钟 |
已暂停 |
已暂停 |
实例当前已暂停 |
直到恢复 |
正在恢复 |

