PostgreSQL 12.2 版本升级到 16.4 版本

2024-09-03 05:52

本文主要是介绍PostgreSQL 12.2 版本升级到 16.4 版本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

将 PostgreSQL 从 12.2 版本升级到 16.4 版本是一个相对较大的跳跃,因为 PostgreSQL 的主要版本之间(如从 12 到 16)可能会引入不兼容的更改、新特性以及性能改进。以下是一个基本的步骤指南,帮助你完成从 PostgreSQL 12.2 到 16.4 的升级过程。请注意,这个过程可能需要根据你的具体环境(如操作系统、数据库大小、配置等)进行调整。

1. 备份数据库

在升级之前,最重要的一步是备份你的数据库。这样,如果升级过程中出现问题,你可以恢复到原始状态。

pg_dumpall -U postgres > all_databases.sql

或者,如果你只想备份特定的数据库:

pg_dump -U postgres your_database_name > your_database_name.sql

2. 安装 PostgreSQL 16.4

在升级之前,你需要先安装 PostgreSQL 16.4。这通常涉及到下载新版本的 PostgreSQL 并按照你的操作系统的指导进行安装。确保在安装过程中不要覆盖或删除旧版本的 PostgreSQL,因为稍后你可能需要访问它。

2.1、创建目录并授权

mkdir -p /postgresql/pgsql16.4
mkdir -p /postgresql/pgdata16.4
chown -R pgsql:pgsql /postgresql/pgsql16.4
chown -R pgsql:pgsql /postgresql/pgdata16.4
chmod -R 775 /postgresql/pgsql16.4
chmod -R 775 /postgresql/pgdata16.4

2.2、解压编译postgresql-16.4及初始化配置

su - pgsql
cd /postgresql/soft
tar zxvf postgresql-16.4.tar.gz
cd postgresql-16.4
./configure --prefix=/postgresql/pgsql16.4 --without-readline
make 
make install
-- 初始化
/postgresql/pgsql16.4/bin/initdb -D /postgresql/pgdata16.4 -E UTF8 --locale=en_US.utf8 -U postgres-- 配置postgresql.conf
vi /postgresql/pgdata16.4/postgresql.conflisten_addresses = '*'
port = 5432        
max_connections = 1000   #logging_collector = off ===>>logging_collector = on
#log_directory = 'log' ===>>log_directory = 'pg_log'
#log_truncate_on_rotation = off ===>> log_truncate_on_rotation = on
#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' ===>> log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
shared_buffers = 128MB  ===>> shared_buffers = 1024MB 
max_wal_size = 1GB
min_wal_size = 80MB-- 配置pg_hba.conf
vi /postgresql/pgdata16.4/pg_hba.conf
host    all      all     0.0.0.0/0      md5

3. 停止 PostgreSQL 12.2 服务

在升级过程中,确保 PostgreSQL 12.2 的服务是停止的,以避免任何潜在的冲突。

# pg_ctl来停止数据库服务
pg_ctl stop# 对于 Linux 系统,使用 systemctl 或 service 命令
sudo systemctl stop postgresql-12
# 或者
sudo service postgresql-12 stop

4. 迁移数据

有几种方法可以迁移数据从 PostgreSQL 12.2 到 16.4:

  • 使用 pg_upgrade:这是 PostgreSQL 官方推荐的升级工具,可以最小化停机时间。但是,它要求旧版本的服务必须运行,并且新版本必须安装在不同的数据目录中。

    /postgresql/pgsql16.4/bin/pg_upgrade --old-datadir /postgresql/pgdata --new-datadir /postgresql/pgdata16.4 --old-bindir /postgresql/pgsql12/bin --new-bindir /postgresql/pgsql16.4/bin -U postgres
    -- OR 
    pg_upgrade -b /postgresql/pgsql12/bin -B /postgresql/pgsql16.4/bin -d /postgresql/pgdata -D /postgresql/pgdata16.4 -U postgres-- 编辑环境变量 vi ~/.bash_profileexport LANG=en_US.UTF8
    export PS1="[`whoami`@`hostname`:"'$PWD]$'
    export PGPORT=5432  
    export PGDATA=/postgresql/pgdata16.4
    export PGHOME=/postgresql/pgsql16.4
    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-- 启动数据库
    pg_ctl start
    -- OR
    /postgresql/pgsql16.4/bin/pg_ctl -D /postgresql/pgdata16.4 start-- 数据库状态
    pg_ctl status-- 停止数据库
    pg_ctl stop
    注意:你需要根据你的实际安装路径调整 `-b` 和 `-B` 参数。
    
  • 使用 pg_dump 和 pg_restore:如果你不想使用 pg_upgrade,或者你的环境不允许这样做,你可以使用 pg_dump 导出旧数据库,然后使用 pg_restore 将其导入到新版本的 PostgreSQL 中。这种方法可能需要更长的停机时间,因为它涉及到导出和导入整个数据库。

5. 验证和测试

升级完成后,验证新数据库的功能和性能。检查所有应用程序是否都能正常工作,以及是否有任何性能问题。

psql -Vpsql -h 127.0.0.1 -p 5432

6. 更新应用程序配置

更新任何指向旧 PostgreSQL 实例的数据库连接字符串和配置。

7. 清理旧版本

一旦你确认新版本运行正常,并且所有应用程序都已更新,你可以安全地卸载或删除旧版本的 PostgreSQL。

注意事项

  • 在升级之前,请仔细阅读 PostgreSQL 的官方升级文档,了解可能的不兼容更改和注意事项。
  • 考虑在测试环境中先进行升级,以确保一切按预期工作。
  • 升级过程中可能会遇到特定于你数据库的问题,因此请准备好解决这些问题。

希望这个指南能帮助你成功地将 PostgreSQL 从 12.2 升级到 16.4!

这篇关于PostgreSQL 12.2 版本升级到 16.4 版本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132211

相关文章

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

InnoDB的多版本一致性读的实现

InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非

JeecgBoot 升级springboot版本到2.6.0

1. 环境描述 Jeecgboot 3.0,他所依赖的springboot版本为2.3.5Release,将springboot版本升级为2.6.0。过程全纪录,从2开始描述。 2. 修改springboot版本号 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-pare

【C++ Primer Plus习题】12.2

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "String.h"using namespace std;int main(){String s1(" and I am a

PostgreSQL入门介绍

一、PostgreSQL 背景及主要功能介绍 1、背景 PG数据库,全称为PostgreSQL数据库,是一款开源的关系型数据库管理系统(RDBMS)。其起源可以追溯到20世纪80年代末和90年代初,由加拿大的计算机科学家Michael Stonebraker及其团队在加州大学伯克利分校启动。该项目旨在创建一个强大的、开源的关系型数据库管理系统,作为早期关系型数据库系统Ingres的继承者。Mi

Cmake之3.0版本重要特性及用法实例(十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧

Windows 10 各版本

对应于服务选项的 Windows 10 当前版本 Version服务选项上市日期OS build最后修订日期1803半年频道7/10/201817134.1917/24/2018Microsoft 建议使用1803半年频道(定向)4/30/201817134.1917/24/20181709半年频道1/18/201816299.5797/24/20181709半年频道(定向)10/17/2017

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本

hector_quadrotor编译总结 | ubuntu 16.04 ros-kinetic版本 基于Ubuntu 16.04 LTS系统所用ROS版本为 Kinetic hector_quadrotor ROS包主要用于四旋翼无人机的建模、控制和仿真。 1.安装依赖库 所需系统及依赖库 Ubuntu 16.04|ros-kinetic|Gazebo|gazebo_ros_pkgs|ge