zoukankan      html  css  js  c++  java
  • PostgreSQL版本快速升级

    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

  • 相关阅读:
    【独立开发人员er Cocos2d-x实战 001】csb文件导出和载入
    Best Time to Buy and Sell Stock I && II && III
    cocos2d-x项目101次相遇-安装和环境搭建 -xcode
    使用 C# 开发智能手机软件:推箱子(十二)
    javascript实现掉落弹出层------Day29
    Android中onTouch与onClick事件的关系
    CSDN编程挑战——《交替字符串》
    【NPR】非真实感渲染实验室
    CSS自己主动换行、强制不换行、强制断行、超出显示省略号
    在Ubuntu 14.04安装和使用Docker
  • 原文地址:https://www.cnblogs.com/codecc/p/5234073.html
Copyright © 2011-2022 走看看