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

相关推荐
黑牛先生16 分钟前
vscode连接本地Ubuntu
linux·运维·ubuntu
夜月yeyue20 分钟前
手撕I2C和SPI协议实现
linux·c++·stm32·单片机·嵌入式硬件
网硕互联的小客服1 小时前
为什么服务器突然变慢?从硬件到软件的排查方法
linux·运维·网络·安全
看到我,请让我去学习1 小时前
C语言—Linux环境下CMake设置库(动态/静态)
linux·服务器·c语言·开发语言·数据结构
Bob99982 小时前
Windows 下编辑 Linux/unix 配置文件:换行符与编码问题
java·linux·javascript·windows·eclipse·tomcat·unix
霖檬ing3 小时前
PostgreSQL
数据库·postgresql
2401_836836594 小时前
PostgreSQL使用
数据库·postgresql
两斤半4 小时前
Debian重装系统后
linux·debian
plmm烟酒僧4 小时前
在 Ubuntu 下通过 C APP程序实现串口发送数据并接收返回数据
linux·c语言·ubuntu·计算机外设·串口·ch340