当前位置: 首页 > news >正文

ubuntu升级postgres

已经有了postgres12,记录一下升级从postgres12升级到15的过程及遇到的一些问题,我没有备份,单纯升级

1、升级过程

深色版本
sudo systemctl stop postgresql
升级PostgreSQL

  1. 停止PostgreSQL服务: 停止当前版本的PostgreSQL服务,以确保在升级过程中没有数据写入。
sudo systemctl stop postgresql
  1. 安装新版本的PostgreSQL: 添加PostgreSQL的官方仓库并安装新版本。
添加PostgreSQL官方仓库
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -sudo apt-get update
 安装新版本的PostgreSQL
sudo apt-get install postgresql-15
  1. 停止新版本的PostgreSQL服务: 新版本安装后,默认会创建一个新的集群并启动服务。停止新版本的PostgreSQL服务。
sudo systemctl stop postgresql@15-main
  1. 删除旧版本的集群: 如果一切正常,可以删除旧版本的集群。
sudo pg_dropcluster 12 main --stop
  1. 启动新版本的PostgreSQL服务: 启动新版本的PostgreSQL服务。
sudo systemctl start postgresql@15-main

2、重要事项

  1. 登录权限设置
vim /etc/postgresql/15/main/pg_hba.conf
# DO NOT DISABLE!
# If you change this first entry you will need to make sure that the
# database superuser can access the database using some other method.
# Noninteractive access to all databases is required during automatic
# maintenance (custom daily cronjobs, replication, and similar tasks).
#
# Database administrative login by Unix domain socket
# 这个设置为trust可以直接在本机进入postgres不需要密码 
local   all             postgres                                trust# TYPE  DATABASE        USER            ADDRESS                 METHOD# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
# 添加一行任何主机可以访问,设置为 md5或者scram-sha-256即需要输入密码
host    all             all             0.0.0.0/0               md5
# IPv4 local connections:
# 设置本地网络连接也需要输入密码
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     md5
  1. 允许远程访问和更改端口号
vim  /etc/postgresql/15/main/postgresql.conf
# - Connection Settings -# 这里默认listen_addresses 没有打开,这里没有更改应该是不能进行远程连接的,设置为*,端口号我设置成5433
listen_addresses = '*'           		# what IP address(es) to listen on;# comma-separated list of addresses;# defaults to 'localhost'; use '*' for all# (change requires restart)
port = 5433                             # (change requires restart)
  1. 更改密码
# 进入数据库,已经设置了本地免密码,可以直接进入sudo -u postgres psql
# 修改密码
ALTER USER postgres WITH PASSWORD 'new_password';
# 退出sql
\q
  1. 查看postgres运行状态
 root@localhost:/etc/postgresql/15/main# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMSLoaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)Active: active (exited) since Sun 2024-11-10 11:43:18 UTC; 38min agoProcess: 65703 ExecStart=/bin/true (code=exited, status=0/SUCCESS)Main PID: 65703 (code=exited, status=0/SUCCESS)Nov 10 11:43:18 localhost.localdomain systemd[1]: Starting PostgreSQL RDBMS...
Nov 10 11:43:18 localhost.localdomain systemd[1]: Finished PostgreSQL RDBMS.
  1. 重启数据库,应该就可以远程连接了
 systemctl restart postgresql

3、安装postgis

  1. 安装 PostGIS

更新包列表:

sudo apt update

安装 PostGIS:
对于 PostgreSQL 15,您可以使用以下命令安装 PostGIS:

sudo apt install postgresql-15-postgis-3
# 这里 postgis-3 是 PostGIS 的版本号,确保与您的 PostgreSQL 版本兼容。
  1. 验证安装

连接到 PostgreSQL 数据库:

sudo -u postgres psql

检查 PostGIS 扩展是否已安装:

CREATE EXTENSION IF NOT EXISTS postgis;
# 如果 PostGIS 扩展已成功安装,这个命令不会产生任何输出。

验证 PostGIS 扩展是否已安装:
运行以下查询以验证 PostGIS 扩展是否已安装:

SELECT * FROM pg_available_extensions WHERE name = 'postgis';
# 如果 PostGIS 扩展已安装,您应该看到一些输出信息。

检查当前数据库中的 PostGIS 函数:
运行以下查询以检查当前数据库中的 PostGIS 函数:

SELECT * FROM pg_proc WHERE proname LIKE 'addgeometrycolumn%';
# 如果 AddGeometryColumn 函数存在,应该看到相关的信息。
http://www.lryc.cn/news/484573.html

相关文章:

  • vue2在el-dialog打开的时候使该el-dialog中的某个输入框获得焦点方法总结
  • SpringBoot(十七)创建多模块Springboot项目
  • Vue.js 高质量翻页功能的完整开发指南
  • android dvr黑屏
  • css文字间距撑满横向距离
  • 【Unity基础】对比OnCollisionEnter与OnTriggerEnter
  • 算法训练(leetcode)二刷第二十五天 | *134. 加油站、*135. 分发糖果、860. 柠檬水找零、*406. 根据身高重建队列
  • Springboot 整合 itext 实现PDF文件合并,识别图片则转成PDF拼接
  • TypeScript 中的 ! 和 ? 操作符
  • 开源三代示波器的高速波形刷新方案开源,支持VNC远程桌面,手机,Pad,电脑均可访问(2024-11-11)
  • 谷歌推出设备内置人工智能,实时向手机用户发出诈骗电话警报
  • AI换人脸facefusion项目口型同步‌API化改造及部署
  • 移动端问题
  • Linux网络——网络初识
  • 从华为到创业公司
  • Vue 组件通信及进阶语法
  • vue文本高亮处理
  • androidstudio入门到放弃配置
  • NLP论文速读(谷歌出品)|缩放LLM推理的自动化过程验证器
  • 【Linux学习】【Ubuntu入门】1-4 ubuntu终端操作与shell命令1
  • 【Qt】Qt在窗口中加载Web界面的方法汇总
  • Java集合框架之Collection集合遍历
  • 基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路
  • windows 查看yolo11 是否安装了cuda
  • 机器学习【激活函数】
  • 【OpenEuler】配置虚拟ip
  • 数据分析师证书怎么考
  • 【人工智能】text2vec-large-chinese模型搭建本地知识库
  • 前端入门一之ES6--递归、浅拷贝与深拷贝、正则表达式、es6、解构赋值、箭头函数、剩余参数、String、Set
  • DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能