PostgreSQL版本快速升级

写在前面

  PostgreSQL9.5版本支持数据分片的功能,为以后做分布式考虑,准备将生产环境的9.1版本升级至9.5。中间需要做数据迁移。

  在迁移操作中,为保证数据完整性,一般需要在数据库停止的情况下进行备份恢复操作,在数据量小的情况下,通过pg_dumpall的方式备份恢复也是很迅速的,但如果数据量大的情况,再使用这种方式将会耗去大量的时间,特别在生产环境中,长时间的停止使用数据库是非常致命的。

  PostgreSQL提供了pg_upgrade的命令用于数据库版本的升级,使用link模式可以快速对数据进行迁移操作。

操作步骤:

  1、安装新版本数据库

    /PATH/TO/postgresql-9.5.1-1-linux-x64.run,根据提示进行数据库安装操作。

  2、停止旧版本的数据库

    /etc/init.d/postgresql-9.1 stop ,根据实际情况停止数据库运行

  3、检查旧数据的区域支持格式

    区域支持在初始化数据库时被指定,不可更改,因此需要将新的数据库的区域支持更改成与旧数据库一样,否则pg_upgrade操作会报错。

    a、查看旧数据库的区域支持,主要是lc-collate,lc-ctype两个参数,进入数据库,使用\l,可以查看

    b、使用initdb指定区域支持初始化新的数据库。

   /PATH/TO/9.5/bin/initdb --lc-collate=zh_CN.utf8 --lc-ctype=zh_CN.utf8 --lc-messages=zh_CN.utf8 --lc-monetary=zh_CN.utf8 --lc-numeric=zh_CN.utf8 --lc-time=zh_CN.utf8 -D /PATH/newdata/

  4、通过link mode 进行快速的数据库升级,要使用link模式需确保新旧数据目录在同一个文件系统底下

    先介绍下pg_upgrade的几个常用参数:使用pg_upgrade --help可以查看详细参数配置

    -d, --old-datadir=DATADIR      指定旧数据文件所在目录

    -D, --new-datadir=DATADIR    指定新数据文件所在目录

    -b, --old-bindir=BINDIR           指定旧版本可执行命令目录

    -B, --new-bindir=BINDIR         指定新版本可执行命令目录

    -k, --link                                使用link模式进行更新(即使用硬链接的方式将新数据文件指向旧数据文件的真实存放位置,减去了copy的时间)

    /PATH/TO/9.5/bin/pg_upgrade -d /PATH/TO/olddata -D /PATH/TO/newdata -b /PATH/TO/9.1/bin -B /PATH/TO/9.5/bin --link

    若没报错,则完成。

  5、启动新数据库

    

参考:

http://www.postgresql.org/docs/9.5/static/pgupgrade.html

PostgreSQL版本快速升级的更多相关文章

  1. postgresql利用pg_upgrade升级数据库(从8.4升级到9.5)

    其他见:http://my.oschina.net/ensn/blog/636766 本文利用pg_upgrade实现将8.4.18版本升级到9.5.0版本,8.4.18版本为RedHat系统自带pg ...

  2. SequoiaDB版本在线升级介绍说明

    1.前言 在SequoiaDB数据库发展过程中,基本保持每半年对外发行一个正式的Release版本.并且每个新发布的Release版本相对老版本而言,性能方面都有很大的提高,并且数据库也会在新版本中加 ...

  3. Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建

    Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建  作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Gerrit版本选择 1>.查看Gerrit官网 ...

  4. mac平台多个php版本快速切换

    mac平台多个php版本快速切换 要求所有php版本都是由brew安装 使用brew安装php多版本方法 # brew install php56 # brew install php70 安装切换工 ...

  5. postgresql异常快速定位

    今天下午在使用.NET链接postgresql的时候报了“3D000”的错误,经过测试得知原来是web.config中的数据库配置问题. 在这里有个小情况需要注意,postgresql是不允许创建相同 ...

  6. 如何快速的将Centos6.7快速升级3.10.9

    参考文档:http://www.xiexianbin.cn/linux/2015/10/15/quickly-upgrade-centos6.5-kernel-from-2.6.32-to-3.10. ...

  7. Nginx1.8.0版本平滑升级新版本1.9.7

    原文:http://www.jb51.net/article/79878.htm 首先查看现在环境nginx的版本为1.8.0 编译的参数只指定了安装路径: 复制代码代码如下: [root@local ...

  8. c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down

    c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down http://blog.csdn.net/delphizhou/article/details/30 ...

  9. asp.net 版本一键升级,后台直接调用升级脚本

    应客户需求,要求实现一个版本一键升级的功能,咨询过同事之后弄了个demo出来,后台代码如下: //DBConnModelInfo:连接字符串的对象 (包含数据库实例名,数据库名,登陆名,登陆密码) p ...

随机推荐

  1. OI回忆录——一个过气OIer的智障历程

    初中 初一参加学校信息学选修课,一周一节课,学pascal. 初一寒假(大约是)入选(其实是钦定吧)当时加上我只有3人的校队(我当然是最弱的一个. 当时甚至有幸得到叉姐授课(现在才知道这是多么难得的机 ...

  2. Educational Codeforces Round 21(A.暴力,B.前缀和,C.贪心)

    A. Lucky Year time limit per test:1 second memory limit per test:256 megabytes input:standard input ...

  3. Codeforces Round #332 (Div. 2)_B. Spongebob and Joke

    B. Spongebob and Joke time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  4. A. Duff and Meat

    A. Duff and Meat time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  5. memcached内存模型

    内存管理 内存结构 把内存划分成不同的slab class仓库 把仓库切分成不同尺寸的小块(chunk),用来存储缓存数据 数据内存分配 首先根据数据的大小找到对应的slab class 找到空闲的c ...

  6. SpringMVC,SpringBoot文件下载

    前言 最近严查security, 导致原来暴露出去的s3不能用了,不允许public的s3,暂时的折中方案是自己做跳转.于是需要在SpringMVC中实现文件下载功能. 关于文件存储的设计 文件存储通 ...

  7. 什么是Linux主机?

    Linux主机是基于Linux内核的服务器操作系统配置的主机(常见Linux服务器操作系统如:Redhat,CentOS,Debian,FreeBSD,Ubentu等). Linux主机采用国内功能最 ...

  8. ==和equals详解+例子

    一开始遇见==和equals我也是分不清,后来看了很多博客,收益匪浅, 担心以后给忘了,所以写下这个,以后复习可以用. (有哪里写得不对的,希望可以留言帮忙改进,大家一起共同进步) 一.Java数据类 ...

  9. Centos6.9安装Node.js+npm爬坑

    Node.js选择 1.下载 wget https://nodejs.org/dist/v8.4.0/node-v8.4.0-linux-x86.tar.gz 2.解压 tar zxvf node-v ...

  10. Centos6.9安装部署nginx服务器

    (一)依赖包安装 首先,gcc,pcre,zlib,openssl安装一边(可以用非-devel,但是嫌麻烦....用非-devel的看这个链接) yum  -y install gcc ------ ...