• 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
  • 相关阅读:
    位运算 & 网络序字节序
    TFTP & commons-net-3.3.jar
    存储过程
    poj1185-炮兵阵地(状态压缩dp)
    hdu4570-区间dp
    codevs1026-dp(记忆化搜索)
    hdu1494 跑跑卡丁车(动态规划)
    hdu5094-Maze
    hdu4403- A very hard Aoshu problem(搜索)
    hdu2510-符号三角形(dfs+打表)
  • 原文地址:https://www.cnblogs.com/cxy486/p/5136464.html
Copyright © 2020-2023  润新知