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

相关推荐
Light_It9 小时前
Linux 内核参数 pci-stub.ids=
linux·kernel
RisunJan9 小时前
Linux命令-scriptreplay(终端会话回放)
linux·运维·chrome
spencer_tseng9 小时前
[kylin & linux] install docker
linux·docker·kylin
x²+(y-√³x²)²=111 小时前
Linux打包文件到Windows,文件/文件类型丢失
linux·运维·windows
求索实验室11 小时前
1368次实验证明:PostgreSQL对数据倾斜的基数估计无解——我的AI4S参赛实录
postgresql·ai编程
柒号华仔11 小时前
「速通Shell」聚砖成墙,Shell函数封装之道
linux·ssh·bash
程序员与背包客_CoderZ11 小时前
Linux D-Bus通信协议详解:从入门到C/C++编码实战
linux·服务器·c语言·c++·嵌入式硬件·嵌入式软件·dbus
Android系统攻城狮11 小时前
Linux PipeWire深度解析之pw_properties_iterate调用流程与实战(六十五)
linux·运维·服务器·音频进阶·pipewire音频进阶
jason.zeng@150220714 小时前
linux的top命令
java·linux·服务器
Wang's Blog14 小时前
PostgreSQL笔记4: 市场地位、生态全景与行业应用实践
数据库·笔记·postgresql