Ubuntu 20.04卸载并重装 PostgreSQL

在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤

下面是一个在 Ubuntu 下彻底卸载并重新安装 PostgreSQL(包括所有版本及其数据目录)的步骤。

文章目录

一、备份(可选,但强烈推荐)

bash 复制代码
# 切换到 postgres 用户,导出所有数据库
sudo -u postgres pg_dumpall > ~/all_databases_backup.sql

~/all_databases_backup.sql 拷到安全位置。


二、卸载 PostgreSQL 并删除残留文件

bash 复制代码
# 1. 停止服务
sudo systemctl stop postgresql

# 2. 卸载所有 postgresql 包
sudo apt purge -y postgresql* libpq-dev

# 3. 删除配置和数据目录
sudo rm -rf /etc/postgresql
sudo rm -rf /etc/postgresql-common
sudo rm -rf /var/lib/postgresql
sudo rm -rf /var/log/postgresql
sudo rm -rf /var/run/postgresql

# 4. 清理无用依赖和缓存
sudo apt autoremove -y
sudo apt autoclean

此时系统中已无 PostgreSQL 及其配置、数据残留。


三、重新安装 PostgreSQL 与 PostGIS

bash 复制代码
# 1. 更新包列表
sudo apt update

# 2. 安装 PostgreSQL(默认版本)及其 contrib 扩展
sudo apt install -y postgresql postgresql-contrib

# 3. 如果需要 PostGIS 和 pointcloud 支持,一并安装:
sudo apt install -y postgis postgresql-*-pointcloud

安装完成后,APT 会自动为你创建并启动一个名为 main 的 cluster(通常对应当前系统的 PostgreSQL 主版本)。

ERROR: extension "postgis" is not available

PostgreSQL 找不到相应版本的 PostGIS 和 PointCloud 控制文件,也就是说系统里并没有为 PostgreSQL 17 安装这些扩展包。Ubuntu 默认仓库里可能只给早期版本打包,或者你还没装上对应的 "postgresql-17-postgis"、"postgresql-17-pgpointcloud" 这样的版本化包


四、安装postgispgpointcloud扩展

  1. 更新 apt 索引

    bash 复制代码
    sudo apt update
  2. 搜索可用的 postgis 包

    bash 复制代码
    apt-cache search postgresql-17-postgis
    # 也可以搜 pointcloud
    apt-cache search postgresql-17-pgpointcloud

    如果能看到类似 postgresql-17-postgis-3postgresql-17-pgpointcloud 的条目,直接安装它们:

  3. 安装版本化扩展

    bash 复制代码
    sudo apt install -y postgresql-17-postgis-3 postgresql-17-pgpointcloud
  4. 重启你的 cluster

    bash 复制代码
    sudo pg_ctlcluster 17 main restart
  5. 进入 psql 创建扩展

    bash 复制代码
    sudo -u postgres psql -d postgis_aa
    CREATE EXTENSION postgis;
    CREATE EXTENSION pointcloud;
    \q
bash 复制代码
(base) zhanyong@ubuntu:~/cesium-deepsea/SLAM$ apt-cache search postgresql-17-postgis
postgresql-17-postgis-3 - Geographic objects support for PostgreSQL 17
postgresql-17-postgis-3-dbgsym - debug symbols for postgresql-17-postgis-3
postgresql-17-postgis-3-scripts - Geographic objects support for PostgreSQL 17 -- SQL scripts
(base) zhanyong@ubuntu:~/cesium-deepsea/SLAM$ 

安装对应的扩展即可

bash 复制代码
sudo apt install -y  postgresql-17-postgis-3 postgresql-17-postgis-3-scripts
sudo apt install -y  postgresql-17-pointcloud

sudo -u postgres psql -d postgis_aa
CREATE EXTENSION postgis;
CREATE EXTENSION pointcloud;

如果成功应该显示如下内容:

bash 复制代码
postgis_aa=# CREATE EXTENSION postgis;
CREATE EXTENSION
postgis_aa=# CREATE EXTENSION pointcloud;
CREATE EXTENSION

五、验证安装与启动状况

bash 复制代码
# 查看 cluster 状态
sudo pg_lsclusters

# 启动 cluster(如果未自动启动)
sudo pg_ctlcluster $(pg_lsclusters -h | awk 'NR==1{print $1, $2}') main start

# 切换到 postgres 用户并进入 psql
sudo -i -u postgres psql

psql 里,你可以执行:

sql 复制代码
SELECT version();
\l      -- 列出数据库
\q      -- 退出

如果输出了 PostgreSQL 版本号,且没有报错,说明安装和集群启动都已成功。


六、恢复数据(如果做了备份)

bash 复制代码
# 作为 postgres 用户恢复所有库
sudo -i -u postgres psql < ~/all_databases_backup.sql

恢复完成后,不要忘了删除或保管好备份文件。


完成上述步骤后,你就拥有了一个全新的、正常运行的 PostgreSQL 环境,可以继续创建数据库、启用 PostGIS/pointcloud 扩展,并建表了。

相关推荐
屿行屿行2 小时前
【Linux】Socket编程(基于实际工程分析)
linux·服务器·网络
runepic2 小时前
Python + PostgreSQL 批量图片分发脚本:分类、去重、断点续拷贝
服务器·数据库·python·postgresql
天才程序YUAN2 小时前
从零开始、保留 Windows 数据、安装Ubuntu 22.04 LTS双系统
linux·windows·ubuntu
Evan芙2 小时前
Rocky Linux 9 网卡改名及静态IP地址配置完整步骤
linux·网络·智能路由器
Zeku2 小时前
20251125 - 韦东山Linux第三篇笔记【上】
linux·笔记·单片机
企鹅侠客3 小时前
Linux性能调优 详解磁盘工作流程及性能指标
linux·运维·服务器·性能调优
icy、泡芙3 小时前
TF卡---热插拔
linux·驱动开发
企鹅侠客3 小时前
Linux性能调优 再谈磁盘性能指标和进程级IO
linux·运维·服务器·性能调优
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [block][mq-deadline]
linux·笔记·学习
不过普通话一乙不改名4 小时前
Linux 网络收包的进阶之路:从普通 socket 到 AF_XDP 零拷贝
linux·运维·网络