You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Ubuntu实例重启后PostgreSQL测试数据库频繁丢失求助

问题分析与解决

核心原因

你的问题大概率是PostgreSQL的数据目录被放在了AWS EC2实例的临时实例存储上。EC2的临时存储(Instance Store)是与实例绑定的本地存储,当实例停止或终止时,存储上的所有数据会被彻底清空——这就是为什么每次重启后jdtest数据库和用户都消失的原因,并非PostgreSQL本身的配置问题。

验证方法

  1. 查看PostgreSQL当前的数据目录位置:
sudo -u postgres psql -c 'SHOW data_directory;'
  1. 检查该目录所在的挂载点是否为临时存储:
df -h $(sudo -u postgres psql -t -c 'SHOW data_directory;')

如果输出的文件系统类型是tmpfs,或者挂载点标注为/mnt(部分实例默认的临时存储挂载点),则确认数据存放在临时存储上。

解决步骤

将PostgreSQL数据目录迁移到EBS卷(AWS的持久化块存储,实例停止后数据不会丢失):

  1. 停止PostgreSQL服务:
sudo systemctl stop postgresql
  1. 创建EBS卷的挂载目录(假设你已将EBS卷挂载到/ebs,若未挂载需先完成EBS卷的挂载和格式化):
sudo mkdir -p /ebs/postgres
sudo chown postgres:postgres /ebs/postgres
  1. 复制现有PostgreSQL数据到新目录:
sudo rsync -av /var/lib/postgresql/16/main /ebs/postgres/
  1. 修改PostgreSQL配置文件,指定新的数据目录:
    编辑/etc/postgresql/16/main/postgresql.conf,找到data_directory配置项,修改为:
data_directory = '/ebs/postgres/main'
  1. 启动PostgreSQL服务并设置开机自启:
sudo systemctl start postgresql
sudo systemctl enable postgresql
  1. 验证:重启实例后,尝试用jdtest用户登录PostgreSQL,确认数据库和用户正常存在。

额外说明

如果你的EC2根卷本身就是EBS卷(Ubuntu实例默认配置),但PostgreSQL数据目录仍在临时存储,可能是安装或配置时手动修改了数据路径。迁移完成后,后续重启实例不会再出现数据丢失的问题。

内容的提问来源于stack exchange,提问作者JDOaktown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:33:16