销毁
销毁实例并移除其配置
destroy 会停止并移除容器,然后从配置文件中删除该实例。默认情况下,主机的数据目录会被保留。使用 --clean-data 可以同时移除数据、WAL 归档和 pgBackRest 仓库的 stanza。
基本用法
执行过程
运行 pg destroy 时:
- 停止容器 — PostgreSQL 优雅关闭
- 移除容器 — 删除 Podman 容器
- 移除配置 — 从
~/.pgcli/pg.yaml中删除该实例条目 - 保留数据(默认)— 主机数据目录
--base-dir/<instance>保留
使用 --clean-data 时:
- 以上所有步骤,加上:
- 移除主机数据 — 删除数据目录
- 移除 WAL 归档 — 删除主机上的所有 WAL 文件
- 移除备份 stanza — 删除该实例的 pgBackRest 仓库 stanza
重建实例
销毁后,可以重新创建实例以获得全新开始:
重要: 不使用 --clean-data 时,旧的数据目录会被保留。当你重新创建实例时,PostgreSQL 会使用现有数据,而 init.sh(创建用户和设置管理员密码)不会再次运行。这可能导致以下问题:
- 数据是用不同的用户或密码创建的
- 你更改了配置中的默认用户
- 你想要完全全新开始
需要彻底清理时使用 --clean-data。
确认提示
默认情况下,pg destroy 会在执行前询问确认:
使用 --force 跳过提示:
使用场景
1. 配置更改后的干净重启
如果你更改了配置中的默认用户、密码或 PostgreSQL 版本,销毁并重建:
2. 移除测试实例
测试完成后,移除不再需要的实例:
3. 修复损坏的状态
如果实例处于异常状态(例如启动失败、数据损坏),销毁并重建:
4. 释放资源
销毁不再活跃使用的实例以释放:
- Podman 容器(CPU 和内存)
- 主机磁盘空间(使用
--clean-data) - 配置文件中的条目
与副本的关系
销毁副本时,主实例上的复制槽不会自动移除。你需要单独清理:
这种两步流程确保如果你计划稍后重新创建副本,不会意外丢失复制槽。
安全注意事项
- 数据丢失:
--clean-data会永久删除该实例的所有数据、WAL 和备份。谨慎使用。 - 无法撤销:销毁后,除非有外部备份,否则实例无法恢复。
- 配置丢失:实例条目会从配置文件中移除。如果以后需要该配置,请先备份。
标志
| 标志 | 默认值 | 描述 |
|---|---|---|
--force |
false |
跳过确认提示 |
--clean-data |
false |
同时移除主机数据、WAL 归档和备份 stanza |
-i, --instance |
default |
要销毁的实例名称 |
相关命令
pg create— 创建新实例pg start— 启动实例pg stop— 停止实例(容器保留)pg replica drop— 从主实例移除复制槽