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

【德哥说库系列】-PostgreSQL跨版本升级

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.PG升级介绍
    • 📣 2.安装PG14.9
      • ✨ 1.1 创建用户
      • ✨ 1.2 创建目录
      • ✨ 1.3 安装依赖
      • ✨ 1.4 编译
    • 📣 3. 9.6.24升级到14.9
      • ✨ 3.1 设置权限
      • ✨ 3.2 新版本初始化
      • ✨ 3.3 检查兼容性
      • ✨ 3.4 创建测试数据
      • ✨ 3.5 执行升级
      • ✨ 3.6 修改配置文件
      • ✨ 3.7 修改环境变量
      • ✨ 3.8 收集统计信息
      • ✨ 3.9 校验数据

前言

一种更快的方式pg_upgrade可以实现PostgreSQL版本升级,本文给予PG9升级到PG14

📣 1.PG升级介绍

数据库升级分为两种,一种是小版本迭代升级,另一种是主板本升级。小版本升级很简单,只需要重启一下数据库即可。要在兼容的版本间升级,你只需要简单地在服务器关闭时替换可执行文件并重启服务器。 数据目录则保持不变–次要升级就这么简单。

对于PostgreSQL的主发行, 内部数据存储格式常被改变,这使升级复杂化。传统的把数据移动到新主版本的方法是先转储然后重新载入到数据库,不过这可能会很慢,所以使用 一种更快的方式pg_upgrade。

📣 2.安装PG14.9

✨ 1.1 创建用户

groupadd -g 60000 pg14
useradd -u 60000 -g pg14 pg14
echo “pg14” | passwd --stdin pg14

✨ 1.2 创建目录

mkdir -p /pg96/{pgdata,archive,scripts,backup,postgresql,soft}
cp /opt/postgresql-9.6.24.tar.gz /pg96/soft/
chown -R pg96:pg96 /pg96
chmod -R 775 /pg96

✨ 1.3 安装依赖

yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel
yum install -y zlib-devel perl python36 tcl openssl ncurses-devel openldap pam
yum install -y zlib libicu

✨ 1.4 编译

su - pg14
cd /pg14/soft
tar zxvf postgresql-14.9.tar.gz
cd postgresql-14.9
./configure --prefix=/pg14/postgresql --without-readline
make -j 4 && make install

📣 3. 9.6.24升级到14.9

✨ 3.1 设置权限

chown -R pg96:pg96 /pg14

✨ 3.2 新版本初始化

su - pg96
rm -rf /pg14/pgdata
/pg14/postgresql/bin/initdb -D /pg14/pgdata -E UTF8 --locale=en_US.utf8 -U postgres

在这里插入图片描述

✨ 3.3 检查兼容性

/pg14/postgresql/bin/pg_upgrade -c -k -b /pg96/postgresql/bin -B /pg14/postgresql/bin -d /pg96/pgdata -D /pg14/pgdata -p 5400 -P 5432

在这里插入图片描述

✨ 3.4 创建测试数据

postgres=# create database testdb;
[pg96@centos79 ~]$ pgbench -i -s 10 -U postgres testdb

在这里插入图片描述
在这里插入图片描述

✨ 3.5 执行升级

升级前需要关闭源库[pg96@centos79 ~]$ pg_ctl stop
waiting for server to shut down.... done
server stopped[pg96@centos79 ~]$ /pg14/postgresql/bin/pg_upgrade -k -b /pg96/postgresql/bin -B /pg14/postgresql/bin -d /pg96/pgdata -D /pg14/pgdata -p 5400 -P 5432

在这里插入图片描述

✨ 3.6 修改配置文件

新版本的postgresql.conf和pg_hba.conf等配置文件匹配旧集簇参数

cat >> /pg14/pgdata/postgresql.conf <<"EOF"
listen_addresses = '*'
port=5432
unix_socket_directories='/pg14/pgdata'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOFcat > /pg14/pgdata/pg_hba.conf << EOF
# TYPE  DATABASE    USER    ADDRESS       METHOD
local     all       all                    trust
host      all       all   127.0.0.1/32     trust
host      all       all    0.0.0.0/0        md5
host   replication  all    0.0.0.0/0        md5
EOF

✨ 3.7 修改环境变量

cat >> ~/.bash_profile <<"EOF"
export LANG=en_US.UTF-8
export PS1="[\u@\h \W]\$ "
export PGPORT=5432
export PGDATA=/pg14/pgdata
export PGHOME=/pg14/postgresql
export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export DATE=`date +"%Y%m%d%H%M"`
export MANPATH=$PGHOME/share/man:$MANPATH
export PGHOST=$PGDATA
export PGUSER=postgres
export PGDATABASE=postgres
EOFsource  ~/.bash_profile

✨ 3.8 收集统计信息

[pg96@centos79 ~]$ pg_ctl start
[pg96@centos79 ~]$ /pg14/postgresql/bin/vacuumdb --all --analyze-in-stages

在这里插入图片描述

✨ 3.9 校验数据

[pg96@centos79 ~]$ psql
psql (14.9)
Type "help" for help.postgres=# \lList of databasesName    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +|          |          |            |            | postgres=CTc/postgrestemplate1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | postgres=CTc/postgres+|          |          |            |            | =c/postgrestestdb    | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
(4 rows)postgres=# \c testdb postgres
You are now connected to database "testdb" as user "postgres".
testdb=# \dtList of relationsSchema |       Name       | Type  |  Owner
--------+------------------+-------+----------public | pgbench_accounts | table | postgrespublic | pgbench_branches | table | postgrespublic | pgbench_history  | table | postgrespublic | pgbench_tellers  | table | postgres
(4 rows)testdb=# select version();version
---------------------------------------------------------------------------------------------------------PostgreSQL 14.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
(1 row)

在这里插入图片描述

相关文章:

【德哥说库系列】-PostgreSQL跨版本升级

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…...

rust学习——智能指针

智能指针 在各个编程语言中&#xff0c;指针的概念几乎都是相同的&#xff1a;指针是一个包含了内存地址的变量&#xff0c;该内存地址引用或者指向了另外的数据。 在 Rust 中&#xff0c;最常见的指针类型是引用&#xff0c;引用通过 & 符号表示。不同于其它语言&#xf…...

系列一、Spring Framework

一、谈谈你对Spring的理解 Spring是一个生态&#xff0c;是一个轻量级的开源容器框架&#xff0c;可以构建Java应用所需要的一切基础设施&#xff0c;它的出现是为了解决企业级应用开发中业务逻辑层和其他各层对象与对象之间耦合的问题&#xff0c;通常情况下所说的Spring是指S…...

PULP Ubuntu18.04

1. 安装eda工具&#xff1a;questasim_10.7_linux64&#xff0c;网上有教程和方法&#xff0c;如有问题&#xff0c;可私信我 2. 代码下载&#xff1a; git clone https://github.com/pulp-platform/pulp 编译代码 cd pulp source setup/vsim.sh make checkout make scripts …...

Docker harbor私有仓库部与管理

目录 搭建本地私有仓库 Docker容器的重启策略 Harbor 简介 什么是Harbor Harbor的特性 Harbor的构成 Docker harbor私有仓库部署 Harbor.cfg配置文件中的参数 维护管理Harbor 总结 搭建本地私有仓库 #首先下载 registry 镜像 docker pull registry#在 daemon.json …...

解决虚拟机联网问题

虚拟机开机后发现右上角缺少联网标志(下面有正常联网标志)&#xff0c;这样就是连不上网的 不信你可以打开Ubuntu里面的浏览器或ping www.baidu.com 1.编辑虚拟机设置-->网络适配器-->如图所示 2.选择编辑-->虚拟网络编辑器 3.更改设置 4此处可以选择还原默认设置&am…...

Unity 自定义小地图

最近工作做了个小地图&#xff0c;再此记录下思路。 1、准备所需素材 显示为地图&#xff08;我们取顶视图&#xff09;。创建一个Cube&#xff0c;缩放到可以把实际地图包住。实际地图的尺寸和偏移量 。我这里长宽都是25&#xff0c;偏移量&#xff08;1&#xff0c;0&…...

力扣每日一题66:加一

题目描述&#xff1a; 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 1&#xff1a; 输…...

项目管理工具ConceptDraw PROJECT mac中文版自定义列功能

ConceptDraw PROJECT Mac是一款专业的项目管理工具&#xff0c;适用于MacOS平台。它提供了成功规划和执行项目所需的完整功能&#xff0c;包括任务和资源管理、报告和变更控制。 这款软件可以与ConceptDraw office集成&#xff0c;利用思维导图和数据可视化的强大功能来改进项目…...

Kafka-Java二:Spring实现kafka消息发送的ack机制

写在前面 如果只有一个kafka实例的话&#xff0c;那么文章中提到kafka集群kafka实例 一、什么是消息发送者端的ack机制 ack机制&#xff1a;消息确认发送成功的标识 由谁发起该标识&#xff1a;kafka集群 发起该标识的场景&#xff1a;kafka集群确认已经收到了消息。 由谁接收…...

Go代码解密:理解byte和int8的边界行为

今天看到一个很有意思的 Golang 代码&#xff0c;最后的输出结果为 4&#xff1a; func main() {count : 0for i : range [256]struct{}{} {m, n : byte(i), int8(i)if n -n {count}if m -m {count}}fmt.Println(count) // 输出为 4 }原因如下 当 i 0 时&#xff0c;n -n …...

Mac M1下使用Colima替代docker desktop搭建云原生环境

文章目录 为什么不使用docker desktop1.docker desktop卸载2.docker、docker compose安装3.colima安装3.1获取镜像地址3.2将下载好的iso文件放到colima指定路径3.3重新执行colima start 4.minikukekubernetes安装5.关闭minikube Mac M1下使用Colima替代docker desktop搭建云原生…...

Non-constant range: argument must be an integer literal

更新 Xcode IDE 后 ForEach 方法抛出了如下异常 Non-constant range: argument must be an integer literal 新增了指向性 id 参数 init(_:content:) 原始方法 ForEach(0 ..< pickerTitleColors.count) {Text(self.pickerTitleColors[$0]).tag($0).foregroundColor(self.…...

TCP网络通信

TCP通信的 实现发1收1 package TCP1;//完成TCP通信的 实现发1收1import java.io.DataOutputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket;public class Client {public static void main(S…...

echarts中,X轴名称过长隐藏,鼠标hove显示全称

echarts中&#xff0c;X轴名称过长隐藏&#xff0c;鼠标hove显示全称&#xff1a; <div id"main" :style"{ width: 100%, height: 100% }"></div>option: {title: {text: 重点物料库存预警,left: center},tooltip: {trigger: axis,axisPointer…...

laravel框架介绍(二) 打开站点:autoload.php报错

Laravel&#xff1a;require..../vendor/autoload.php错误的解决办法 打开站点&#xff1a;http://laraveltest.com:8188/set_api-master/public/ set_api-master\public\index.php文件内容为&#xff1a; 解决办法&#xff1a; 1. cd 到该引用的根目录&#xff0c;删除 compo…...

reactNative导入excel文件

组件内导入 import {TouchableOpacity,PermissionsAndroid} from react-native; import RNFS from react-native-fs; import XLSX from xlsx; import DocumentPicker from react-native-document-picker; import {Buffer} from buffer;// 需要安装一下三个,Buffer和react-nati…...

mysql 命令行安装

一、安装包下载 1、下载压缩包 &#xff08;1&#xff09;公众号获取 关注微信公众号【I am Walker】&#xff0c;回复“mysql”获取 &#xff08;2&#xff09;官网下载 安装地址MySQL :: Download MySQL Community Server ​ ​ 二、解压 下载完之后进行解压&…...

JAVA基础知识Fundamental

JAVA基础知识 Java开发环境名词解释 八大基本类型整型长整型双精度浮点型布尔型字符型类型间的转换 运算符&#xff08;Operator&#xff09;算术运算符关系运算符逻辑运算符赋值运算符字符串连接运算符条件运算符 分支结构循环结构数组方法方法的重载&#xff08;overloading&…...

民宿如何经营与管理?【民宿小程序】

随着旅游业的快速发展&#xff0c;越来越多的人选择经营民宿&#xff0c;将自己的房屋开放给旅客入住。然而&#xff0c;要成功经营一家民宿&#xff0c;并保持良好的运营状态&#xff0c;需要有效的管理和营销策略。在这个过程中&#xff0c;民宿小程序能够发挥重要作用。 民宿…...

用 Rust 和 cURL 库制作一个有趣的爬虫

目录 一、介绍 二、准备工作 三、代码实现 四、解析 HTML 并提取特定元素示例 总结 本文将介绍如何使用 Rust 编程语言和 cURL 库制作一个有趣的网络爬虫。我们将通过实例代码来展示如何抓取网页内容、处理数据和解析 HTML 结构。同时&#xff0c;还将探讨爬虫技术的原理、…...

华为OD 走方格的方案数(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应往年部分考题以及新出的题目。 我将持续更新最新题目 我精选了一部分题目免费分享给大家,可前往夸克网盘转存,请点击以下链接进入: 我用夸克网盘分享了「华为OD题库J…...

postgresql|数据库|序列Sequence的创建和管理

前言&#xff1a; Sequence也是postgresql数据库里的一种对象&#xff0c;其属性如同索引一样&#xff0c;但通常Sequence是配合主键来工作的&#xff0c;这一点不同于MySQL&#xff0c;MySQL的主键自增仅仅是主键的属性做一个更改&#xff0c;而postgresql的主键自增是需要序…...

(完全解决)如何输入一个图的邻接矩阵(每两个点的亲密度矩阵affinity),然后使用sklearn进行谱聚类

文章目录 背景输入点直接输入邻接矩阵 背景 网上倒是有一些关于使用sklearn进行谱聚类的教程&#xff0c;但是这些教程的输入都是一些点的集合&#xff0c;然后根据谱聚类的原理&#xff0c;其会每两个点计算一次亲密度&#xff08;可以认为两个点距离越大&#xff0c;亲密度越…...

Unity中Shader的ShaderLOD

文章目录 前言一、ShaderLOD的使用步骤1、ShaderLOD使用在不同的SubShader中&#xff0c;用于区分SubShader所对应的配置2、在 C# 中使用 Shader.globalMaximumLOD 赋值来选择不同的 SubShader,以达到修改配置对应Shader的效果3、在设置LOD时&#xff0c;是需要和程序讨论统一 …...

图像压缩(4)《数字图像处理》第八章 8.3节 数字图像水印

图像压缩&#xff08;3&#xff09;《数字图像处理》第八章8.3节数字图像水印 一. 前言二.章节引言三.简单综述三.本章小结四.参考文献四. 小结 一. 前言 始于那本深蓝色的大块头&#xff0c;冈萨勒斯的《数字图像处理》&#xff0c;从此走上了图像信号处理的不归路&#xff0…...

C++之lambda匿名函数总结(二百四十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…...

STM32F103单片机内部RTC实时时钟驱动程序

一、STM32f103系列RTC功能 RTC实时时钟功能是嵌入式软件开发中比较常用的功能&#xff0c;一般MCU的RTC功能都带有年月日时间寄存器&#xff0c;比如STM32F4xx系列&#xff0c;RTC描述如下&#xff1a; 可见F4系列的RTC功能比较强大&#xff0c;设置好初始时间后&#xff0c;读…...

ChinaSoft 论坛巡礼 | 开源软件生态健康度量论坛

2023年CCF中国软件大会&#xff08;CCF ChinaSoft 2023&#xff09;由CCF主办&#xff0c;CCF系统软件专委会、形式化方法专委会、软件工程专委会以及复旦大学联合承办&#xff0c;将于2023年12月1-3日在上海国际会议中心举行。 本次大会主题是“智能化软件创新推动数字经济与社…...

Leetcode.2698 求一个整数的惩罚数

题目链接 Leetcode.2698 求一个整数的惩罚数 rating : 1679 题目描述 给你一个正整数 n n n &#xff0c;请你返回 n n n 的 惩罚数 。 n n n 的 惩罚数 定义为所有满足以下条件 i i i 的数的平方和&#xff1a; 1 ≤ i ≤ n 1 \leq i \leq n 1≤i≤n i ∗ i i * i i∗i 的…...