---
title: "有状态应用"
description: "使用数据库模板部署本地持久化应用，并规划升级、故障处理和数据保护。"
---

> Documentation Index
> Fetch the complete documentation index at: https://cdelivery.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# 有状态应用

数据库等应用依赖持续保存的状态。CDelivery 的本地数据部署方式将应用固定到一台服务器并使用一个副本，便于明确数据位置。

## 部署 PostgreSQL 示例

1. 由管理员在目标服务器创建一个数据卷，例如 `postgres-data`。
2. 在业务分组中创建应用，选择 PostgreSQL 18 模板。
3. 确认模板中的镜像、`POSTGRES_USER`、`POSTGRES_DB` 和 `POSTGRES_PASSWORD`。
4. 选择目标服务器，将数据卷挂载到模板设置的数据目录。
5. 如果数据库只供组内应用使用，移除对外发布端口。
6. 创建后检查初始化日志，并从同分组应用连接数据库。

PostgreSQL 18 模板挂载 `/var/lib/postgresql`，保留镜像默认的 `PGDATA`。MariaDB 12 模板挂载 `/var/lib/mysql`。修改镜像或环境变量后，应重新核对实际数据路径和初始化规则。

模板生成的密码需要自行妥善保存。数据库已初始化后，修改某个初始化环境变量不一定会更改已有数据库账户，必须依据数据库自身的管理方法处理。

## 当前部署限制

| 能力 | 本地数据应用 |
| --- | --- |
| 运行副本 | 固定 1 |
| 服务器 | 固定到创建时选择的服务器 |
| 自动扩缩容 | 不使用 |
| XConfig | 不能同时使用 |
| Guardian | 不支持 |
| 数据复制与自动接管 | 不由本地数据挂载自动提供 |

业务检查可用于观察数据库或应用状态。

## 升级前检查

1. 核对数据库版本间的数据格式与升级要求。
2. 完成可恢复的数据库备份，并验证恢复方法。
3. 安排允许中断的维护时间，确认没有不必要的并发写入。
4. 检查新旧进程同时访问数据目录是否安全，谨慎选择更新顺序。
5. 更新后验证数据、账户、业务连接及日志。

> **Caution**
>
> 先启动新副本可能导致两个进程同时尝试访问同一份本地数据。不要将无状态 Web 应用的更新策略直接用于数据库。

## 故障与清理

目标服务器离线时，先判断机器和存储是否可恢复；不能简单地把应用调度到另一台服务器并期望相同卷名带来原数据。需要迁移时，采用数据库导出、备份恢复等明确流程，并重新核对新应用配置。

删除应用会保留卷。确认备份和保留期限后，再由管理员在[数据卷管理](/docs/zh-cn/administration/nodes/volumes/)中清理不再需要的数据。不要把应用删除、配置回滚或镜像降级当作数据库恢复机制。

Source: https://cdelivery.dev/docs/zh-cn/guides/apps/persistence/stateful/index.mdx
