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 扩展,并建表了。

相关推荐
小米里的大麦3 小时前
022 基础 IO —— 文件
linux
Xの哲學3 小时前
Perf使用详解
linux·网络·网络协议·算法·架构
门前灯3 小时前
Linux系统之iprconfig 命令详解
linux·运维·服务器·iprconfig
tb_first3 小时前
k8sday09
linux·云原生·容器·kubernetes
忧郁的橙子.3 小时前
三、k8s 1.29 之 安装2
linux·运维·服务器
huangyuchi.4 小时前
【Linux系统】动静态库的制作
linux·运维·服务器·动态库·静态库·库的简单制作
jim写博客4 小时前
Linux进程概念(四)环境地址变量
linux·运维·服务器
稚辉君.MCA_P8_Java5 小时前
豆包 Java的23种设计模式
java·linux·jvm·设计模式·kubernetes
Nie_Xun5 小时前
ubuntu网络共享
linux·运维·ubuntu
花小璇学linux6 小时前
imx6ull-驱动开发篇22——Linux 时间管理和内核定时器
linux·运维·驱动开发