首页 > 其他分享 >pg 大版本升级方法 及 pg_upgrade就地升级测试

pg 大版本升级方法 及 pg_upgrade就地升级测试

时间:2023-04-18 13:35:32浏览次数:55  
标签:PRD upgrade postgres pg5432 版本升级 pg 9.6 data


一、 主要升级方法

PostgreSQL自身有三种大版本升级的方法:

pg 大版本升级方法 及 pg_upgrade就地升级测试_版本升级

pg 大版本升级方法 及 pg_upgrade就地升级测试_数据库_02

三种方法升级建议架构如下:

pg 大版本升级方法 及 pg_upgrade就地升级测试_postgresql_03

pg 大版本升级方法 及 pg_upgrade就地升级测试_版本升级_04

pg 大版本升级方法 及 pg_upgrade就地升级测试_postgresql_05

 

另外根据pg大会介绍,还有一种升级工具叫做PgQ

pg 大版本升级方法 及 pg_upgrade就地升级测试_数据库_06

pg 大版本升级方法 及 pg_upgrade就地升级测试_postgresql_07

其特点如下

pg 大版本升级方法 及 pg_upgrade就地升级测试_版本升级_08

pg 大版本升级方法 及 pg_upgrade就地升级测试_版本升级_09

 

二、 pg_upgrade就地升级测试

 

1. 测试环境

测试postgresql 9.6 升级至 postgresql 10.4

源库:9.6环境

  • prefix目录: /data/PRD/postgres/base/9.6.2
  • pgdata目录:/data/PRD/postgres/9.6.2/pg5432/data
  • extension:pg_stat_statements、plpgsql

目标库:10.4环境

  • prefix /data/PRD/postgres/base/10.4
  • pgdata /data/PRD/postgres/10/pg5432/data

 

2. 升级步骤

  • 安装postgresql10软件

详情参考安装文档,需要在升级前完成,缩短升级时间

  • 关闭源与目标库
# 停业务关闭源库
/data/PRD/postgres/base/9.6.2/bin/pg_ctl -D /data/PRD/postgres/9.6.2/pg5432/data stop
# 关闭目标库
/data/PRD/postgres/base/10.4/bin/pg_ctl -D /data/PRD/postgres/10/pg5432/data stop
  • 升级
/data/PRD/postgres/base/10.4/bin/pg_upgrade --old-datadir "/data/PRD/postgres/9.6.2/pg5432/data" --new-datadir "/data/PRD/postgres/10/pg5432/data" --old-bindir "/data/PRD/postgres/base/9.6.2/bin" --new-bindir "/data/PRD/postgres/base/10.4/bin" --link

# 输出
If you want to start the old cluster, you will need to remove
the ".old" suffix from /data/PRD/postgres/9.6.2/pg5432/data/global/pg_control.old.
Because "link" mode was used, the old cluster cannot be safely
started once the new cluster has been started.

也可以在升级时加上vacuumdb参数

start:14:30:05 14:33:29 3分钟 --vacuumdb --analyze-only
start:14:45:40 14:54:25 10分钟 --vacuumdb 210GB

如果不进行vacuumdb,中断时间在1min左右,后面的过程可以在拉起数据库之后执行

  • 修改环境变量文件 .bash_profile
  • 启动10数据库
/data/PRD/postgres/base/10.4/bin/pg_ctl -D /data/PRD/postgres/10/pg5432/data start
  • pgrman升级,备份脚本修改

 

3. 回滚方案

  • 将 /data/PRD/postgres/9.6.2/pg5432/data/global/pg_control.old 文件重命名回pg.control
  • 拉起原9.6库即可

 

4. 备库升级

  • 安装postgresql软件,参考主库升级文档
  • 删除备库原文件
  • 重新搭建备库
pg_basebackup -hip  -U repuser -F p -P -Xfetch -R -D /data/PRD/postgres/10.4/pg5432/data -l repuserback

 

参考

http://www.yunweipai.com/archives/23860.html

《postgresql版本升级方案演进》

标签:PRD,upgrade,postgres,pg5432,版本升级,pg,9.6,data
From: https://blog.51cto.com/u_13631369/6203180

相关文章

  • pg主从复制(一)——流复制机制
    PostgreSQL9.1之前,主从复制传输以WAL日志文件为单位,主库写完一个WAL日志文件后才传送到备库,这种方式导致主备延迟特别大。9.1引入了主备流复制,传输单位是WAL日志的record,备库不断从主库同步相应的数据,并apply每个WALrecord,因此9.1能够做到同步复制。同时9.1提供了HotStandby,备库......
  • pg 物化视图相关
    一、物化视图简介类似oracle,pg的物化视图也是物理是实际存在的表。在执行某些查询时效率较低,而且使用传统方法(例如索引)无法显著提高效率,这时常用的方法是将需要查询的数据事先查好并储存起来,这样就不需要每次查询都从头执行一次。这种“缓存”机制其实就是物化视图。CREATEMA......
  • pg 崩溃恢复篇(一)—— WAL的作用与全页写机制
    WAL(WriteAheadLog)机制最初在7.1版中实现,以减轻服务器崩溃的影响。它也是基于时间点恢复(PITR)和流复制(SR)实现的基础。WAL机制非常复杂,在第一篇中,我们只看看为什么需要WAL,它有什么作用,又会有什么不足。一、 没有WAL的插入操作要看为什么需要有WAL,那就先看看如果没有会怎么样。假设......
  • 交换机版本升级
    步骤1.准备升级文件包2.查看设备当前版本3.PC利用3CD完成TFTP服务器搭建4.使电脑和交换机可以通信5.上传或下载安装包到交换机6.指定下次启动文件7.重启设备8.再次查看升级完成后的版本(1)3CD升级命令<H3C>displayversion                  ......
  • pg 崩溃恢复篇(二)—— WAL文件结构及管理
    第二篇我们来看WAL文件逻辑、物理结构以及管理方法。一、事务日志和WAL文件1.命名规则    在逻辑上,pg用一个地址空间长度为8B的虚拟文件表示事务日志(最大可达16EB)。pg中的事务日志默认切分为16MB的文件,每个文件称为WAL段。pg11开始,使用initdb命令初始化时可以使用–wal......
  • pg 如何生成创建表sql语句?
    oracle有dbms_metadata.get_ddl;sqlserver可以直接右键;mysql有showcreatetable但pg好像没有直接的方法,网上找到了几种自己创建函数的方法,收集一下。法一:支持生成包含:字段(支持数组类型字段)、约束、索引(支持唯一索引、全类型索引)在内的建表语句。CREATEORREPLACEFUNCTION"public......
  • pg 10 主要参数配置整理
    一、查看参数设置show参数名select*frompg_settingswherename='参数名';查看 postgresql.conf文件  二、参数是否可修改pg中主要可优化参数都位于postgresql.conf文件中,其中参数是否可修改可通过pg_settings的context字段查询。postgres=#selectdistinctcontextfrom......
  • pg 物理架构
    架构图各部分用途......
  • pg事务篇(一)—— 事务与多版本并发控制MVCC
    一、MVCC常用实现方法一般MVCC有2种实现方法:写新数据时,把旧数据快照存入其他位置(如oracle的回滚段、sqlserver的tempdb)。当读数据时,读的是快照的旧数据。写新数据时,旧数据不删除,直接插入新数据。PostgreSQL就是使用的这种实现方法。1.PostgreSQL的MVCC实现方式优缺点优点无论事务......
  • Oracle 单进程可用PGA为4G限制导致的ORA-4030报错
    一、问题背景收到开发反馈,系统报表运行过程中报错,一看发现是ORA-4030,内存的问题查看alert日志,发现期间有大量ORA-4030报错,并且主要是pga相关的打开trace文件,可以看到报错进程使用内存接近4G但是查看pga参数设置,发现设置的上限是20G,完全没到,并且期间总的PGA使用率也不高 二、报错......