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

postgres大版本升级实践 - renqiang

postgres大版本升级实践

摘要

postgres发展迅猛,目前已经到了19版本了,但公司的版本还停留在9.2版本,同时公司应网信办的要求,需要修复postgres的漏洞,只能升级版本,以下是对postgres V9.2版本,数据库的容量12T,升级至postgres V12.22版本的实践,记录一下升级的流程,遇到的问题,怎么解决的。

整体流程

  1. 兼容性测试,这里主要包括版本之间的兼容性问题,比如数据类型,内存表,扩展等等。
  2. 性能测试,需要同业务一起,在新版本中发起请求,可以发现性能的问题。
  3. 抓包整理业务方。
  4. 确定升级时间,通知到各个业务方。
  5. pg_upgrade升级。
  6. 回退(本文不涉及到回退),该步骤尤其重要,文章结尾说了一些思路。

遇到的问题

pg_upgrade --check,这个过程会检查一下和新版本的兼容,遇到问题就解决问题

部署上的问题

1.pg_config先看看老的版本编译的参数,在pg_configure时使用老版本的编译参数
2.注意一些编译参数的变化,比如老版本编译使用-with-ossp-uuid,高版本使用-with-uuid=ossp
3.注意wal-segment的大小,老版本使用pg_configure $PGDATA|grep -i wal 查看以下,如果新的版本不一致,使用新版本的pg_resetwal --wal-segsize=64 $PDNEWDATA
4.老版本查看部署的用户,部署postgres时会创建linux用户,一般都是postgres,但是还是注意一下,可以查看部署的用户,通过select * from pg_roles where oid=10;
5.扩展问题,老版本使用了orafce扩展,在部署pgv12时,扩展的版本不兼容,也需要升级。
6.uuid扩展问题,在安装的lib下缺少libuuid.so.16,使用root用户yum安装一个,在创建一个软链ln -s /usr/local/lib/libuuid.so.16.0.22 /data/pg12/lib/libuuid.so.16
7.unknown数据类型的字段,这个需要看看是否在使用,在使用的表则需要改类型,没有使用则删除。

升级上的问题

1.在link过程中,遇到orafce扩展的函数不存在,这里没什么好方法,要么对依赖的函数改造,要么将所有依赖orafce的函数视图在升级前删掉,升级之后在创建。
比如strcat替换string_agg,unnest改造为表

升级后的问题

1.old_snapshot_threshold参数设置问题,该参数在老版本设置的1h,导致加工程序启动负载一直居高不下,后面设置为-1解决了。

写在最后

我们的库12T比较大使用的link方式,大概也就不到2分钟就完成了,如果是copy那不知道要多久了。
为什么没有回退步骤,原因是我们这个库的数据是可以补的,即使高版本有问题,解决不了,我们也可回退到低版本。
回退很重要,目前我们没有什么好方法,广大的网友可以支支招。

http://www.jsqmd.com/news/796968/

相关文章:

  • SAP PS模块BAPI与BDC混用指南:项目预算下达(CJ30/CJ32)的两种自动化方案对比
  • 别再盲目调Contrast!Kallitype印相成败取决于Midjourney输出的0.05–2.8 Dmax区间灰阶保真度——实测12组prompt结构对比报告
  • 用TensorFlow Lite Micro在Arduino上跑个‘Hello World’:从模型部署到LED闪烁的完整流程
  • 番茄小说下载器终极方案:打造个人数字图书馆的完整指南
  • 打破垄断:国产纳米氧化镁,下一个千亿赛道!
  • SAS协议深度解析:数据中心存储的基石与未来演进
  • 最新OpenClaw 2.7.1 Windows 环境快速部署教程
  • 音频格式转换终极指南:解锁加密音乐文件跨平台播放的完整解决方案
  • 有向图最小生成树:朱刘算法原理与实战解析
  • 探索卫星互联网产业发展新路径 - 速递信息
  • FanControl终极指南:3步轻松掌控Windows风扇控制,实现性能与静音完美平衡
  • 微PE工具箱+Ghost+EasySysprep:一套给老旧电脑“换系统”的保姆级流程
  • Perplexity搜索结果为何更可信?拆解其引用溯源机制 vs Google的“黑盒摘要”,附浏览器插件级验证方案
  • 光伏组件封装材料革新:液态硅胶如何提升组件可靠性并延长寿命
  • 从信号完整性角度看Zynq Z7 DDR设计:长度匹配、端接与ZQ校准,一个都不能少
  • 从课堂到代码:三大数学可视化工具实战解析
  • 穿透代理迷雾:在TongWeb负载架构中精准捕获客户端真实IP的实践指南
  • 终极Xbox存档提取指南:3分钟学会游戏进度跨平台迁移
  • PMP培训机构怎么选?选才聚,双官方认证更靠谱
  • 2026年实测7款靠谱降AI率工具,搞定论文AI率过高难题(附真实效果) - 降AI实验室
  • 终极Visual C++运行库一键修复方案:彻底解决软件启动失败问题
  • 别再只会用现成模块了!深入剖析双工对讲机中的声电转换与前置放大电路设计
  • DC-DC电源PCB布局实战:Buck、Boost、SEPIC高频环路最小化与噪声抑制
  • SQL Server 2019管理工具升级陷阱:为什么我劝你别轻易点那个SSMS更新通知
  • Windows 10/11上安装VisIt 3.1.0踩坑实录:关防火墙、调显卡、解决窗口乱飞
  • 从零构建51单片机+DAC0832多波形信号发生器:汇编代码详解与Proteus仿真全流程
  • 江苏酒店客房茶包定制供应链深度横评:2026年高品质袋泡茶OEM选购指南 - 年度推荐企业名录
  • EIGRP的‘黑话’与‘潜规则’:从邻居表、拓扑表到可行距离,一次讲清那些让人困惑的概念
  • Postman接口测试实战:巧用环境变量与全局Token,高效应对多环境与鉴权挑战
  • HS2-HF_Patch汉化补丁:3步实现Honey Select 2完整中文体验