PostgreSQL 利用pg_upgrade升级版本

  参考:http://www.postgresql.org/docs/current/static/pgupgrade.html

  • 概述

从低版本升级到 新版本,有几种可选的方案。一是使用pg_dump/pg_restore,该方法比较耗时,也即是停机时间比较长,特别是大数据量下,但是 稳定且易于操作。二是和MySQL那样利用复制的方式,停机时间短,但操作相对复杂。第三种就是利用pg_upgrade,重建系统表,相对停机时间较短。

  • pg_upgrade

  1. 语法

  pg_upgrade -b oldbindir -B newbindir -d olddatadir -D newdatadir [option...]

  2. 原理

根据官方文档介绍,PostgreSQL  每次升级主要体现在系统表的改变,对于数据文件的格式基本不做改动,因此利用这个特性,只要重建所有系统表,复用原有数据文件,即可完成升级。对于 8.4.X后的每一次大版本升级都适用。需要注意的是,即便如此,该方法也有一定的限制,在官方文档的NOTE部分有详细说明。

  • 升级步骤

  1. 编辑postgresql.conf,修改旧数据库端口为5433

  2. 安装新版PostgreSQL

  3. 停止新旧数据库服务 

  sudo service postgresql stop

  4. 验证兼容性

/usr/lib/postgresql/9.4/bin/pg_upgrade --old-datadir=/var/lib/postgresql/9.3/main/ --new-datadir=/var/lib/postgresql/9.4/main/  --old-bindir=/usr/lib/postgresql/9.3/bin/  --new-bindir=/usr/lib/postgresql/9.4/bin -p5433 -P5432 -o"-c config_file=/etc/postgresql/9.3/main/postgresql.conf" -O"-c config_file=/etc/postgresql/9.4/main/postgresql.conf" -c

  5. 升级

/usr/lib/postgresql/9.4/bin/pg_upgrade --old-datadir=/var/lib/postgresql/9.3/main/ --new-datadir=/var/lib/postgresql/9.4/main/  --old-bindir=/usr/lib/postgresql/9.3/bin/  --new-bindir=/usr/lib/postgresql/9.4/bin -p5433 -P5432 -o"-c config_file=/etc/postgresql/9.3/main/postgresql.conf" -O"-c config_file=/etc/postgresql/9.4/main/postgresql.conf"

  6. 执行脚本重建统计信息,删除旧数据库(可选)

./analyze_new_cluster.sh
./delete_old_cluster.sh
时间: 2024-10-24 19:29:57

PostgreSQL 利用pg_upgrade升级版本的相关文章

利用pg_upgrade更新数据库(从8.4升级到9.5)

本文利用pg_upgrade实现将8.4.18版本升级到9.5.0版本,8.4.18版本为RedHat系统自带pg数据库版本. 环境:Red Hat Enterprise Linux Server release 6.5 (Santiago) X86-64 查看手册看到可以利用pg_upgrade实现从8.4到9.5版本直接升级: pg_upgrade supports upgrades from 8.3.X and later to the current major release of P

PostgreSQL升级之pg_upgrade升级

PostgreSQL中的升级,如果针对小版本的升级,比如9.6.1升级到9.6.2(当前的最新版本),只需要用9.6.2版本的软件替换9.6.1版本的软件即可,不需要做额外的操作,因为整个大版本是相互兼容的,内部存储形式也是兼容的.但如果涉及到跨大版本升级比如9.4.11升级到9.6.2,这种直接替换软件就不行了,因为跨版本的内部存储形式发生了变化. 官方给了三种升级的方式来解决跨版本升级: pg_dumpall pg_upgrade 通过复制 pg_dumpall是一种把数据从旧版本逻辑导出,

利用yum升级操作系统版本(目前最新6.6)

1. 查看操作系统版本 [[email protected] ~]# cat /etc/redhat-releaseCentOS release 6.4 (Final) 2. 让操作系统能够与外网通信 [[email protected] ~]# ping www.baidu.comPING www.a.shifen.com (119.75.218.70) 56(84) bytes of data.64 bytes from 119.75.218.70: icmp_seq=1 ttl=128 t

Python升级版本及版本升级后Yum无法使用的解决方法

#升级版本 yum -y install gcc cd /opt wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tgz tar xf Python-2.7.6.tgz  ./configure --prefix=/usr/local/python2.7  cd Python-2.7.6 ./configure --prefix=/usr/local/python2.7  make && make install mv /usr/b

Linux或Unix环境利用符号链接升级Maven

1,解压Maven到安装目录,在解压目录同一级创建刚解压目录的符号链接,命令如下: ln -s apache-maven-3.3.9 apache-maven 2,配置环境变量,这里Maven主目录环境变量的主目录为以上新建的符号链接,以后升级版本只需要更改符号链接指向即可.

NTFS For Mac升级版本方法介绍

在苹果市场发展快速的今天,Mac电脑在我们日常办公中必不可少,但是我们再使用Mac电脑时常出现与Windows系统文件不兼容的问题.这时NTFS For Mac就派上用场了. NTFS For Mac在Windows系统和Mac系统之间提供无阻碍的数据交换.现在它已经升级到NTFS For Mac12了,如何升级NTFS For Mac版本呢? 小编在这里告诉大家升级版本操作起来很简单,NTFS For Mac官网会不定期的推出新版本,系统会自动检查是否有新版本推出.如果一个新版本的驱动程序已被

斗地主牌型基本算法升级版本

斗地主牌型基本算法升级版本 好久没更新博客了,前段时间和朋友一起开了一个公司 做APP,最后失败了.现在又开始做棋牌游戏了,最近在看网狐的源码,发现里面斗地主的基本算法太强大了,现在想想我原来的算法简直是弱爆了,分享一下 希望能对你有一点点帮助.以下主要涉及到判断牌型,牌型大小比较2块,如果你想了解更多关于棋牌游戏的东西请访问我的 棋牌游戏专栏. 一.判断牌型 定义一个结构来表示每张相同牌的信息. //分析结构 structtagAnalyseResult { BYTE cbFourCount;

Nginx 升级版本或者重新编译增加参数

Nginx 升级版本或者重新编译增加参数 这里我们重新编译下,增加nginx用户和组 先创建用户 #useradd nginx 开始编译 #cd /usr/local/nginx-1.6.1 #./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --h

中国寒龙社工包v3.34 6.1升级版本已经发布 具体请到官网下载!!感谢支持!~~~~~不会升级的请到咱们交流群!本程序在windowsxp下最为兼容 感谢支持!如果有BUG请反馈!!

寒龙社会工程包:http://pan.baidu.com/s/1dDcilBb当你看到 中国寒龙V3.34 6.1版本的发布  那么本工具包将更强大的 展现了工具包的价值! 本次开发由by:寒龙升级  感谢大家支持 如果有各位小组的支持 本人不谢感激! 当然本站内的工具包 可以提供专门店小组工具包 制作!承接QQ群:94588528 本次手动升级  修复一下几点的不足! v3.33版本出现的  各种打不开的问题 v3.33版本中出现 主程序远控不能配置的问题 v3.33版本 部分 文件夹不能打开