PG数据库升级步骤说明(pg_dumpall和pg_upgrade)

一、数据库升级9.4到9.5

1.pg_dump导入导出(数据量不大时使用)

postgres用户登录

$ pg_dumpall > db_export.out

$ env|grep LANG

LANG=en_US.UTF-8

如果数据库字符集为en_US.UTF-8,系统字符集为zh_CN.UTF-8

导入步骤为

postgres用户登录

$export LANG=en_US.UTF-8

$psql -f db_export.out postgres

2.pg_upgrade(pg_upgrade方式)

升级版本:9.4 --》9.5

升级前提:9.4数据库中有完整数据,9.5安装完成后仅需要initdb就可以

1)升级前一致性检查

postgres用户登录执行以下命令:

[[email protected] pgdata]# su - postgres

[[email protected] ~]$ pwd

/home/postgres

使用9.5新版本bin路径的pg_upgrade执行检查。

[[email protected] ~]$ /opt/pg/9.5/bin/pg_upgrade -c -d /pgdata94 -D /pgdata -b /opt/pg/9.4/bin -B /opt/pg/9.5/bin

Performing Consistency Checks

-----------------------------

Checking cluster versions                                   ok

Checking database user is the install user                  ok

Checking database connection settings                       ok

Checking for prepared transactions                          ok

Checking for reg* system OID user data types                ok

Checking for contrib/isn with bigint-passing mismatch       ok

Checking for presence of required libraries                 ok

Checking database user is the install user                  ok

Checking for prepared transactions                          ok

*Clusters are compatible*

[[email protected] ~]$

2).执行升级

升级方式:复制数据文件方式,9.4旧版本PGDATA中数据复制到9.5新版本PGDATA,执行速度慢,两个数据目录独立,保存双份数据;

硬链接方式,升级时命令行加上--link参数,不复制数据仅建立连接,执行速度快,仅保存一份数据。

(注意:两个数据库执行这个步骤时,全部为停止状态)

[[email protected] ~]$ /opt/pg/9.5/bin/pg_upgrade -d /pgdata94 -D /pgdata -b /opt/pg/9.4/bin -B /opt/pg/9.5/bin

Performing Consistency Checks

-----------------------------

Checking cluster versions                                   ok

Checking database user is the install user                  ok

Checking database connection settings                       ok

Checking for prepared transactions                          ok

Checking for reg* system OID user data types                ok

Checking for contrib/isn with bigint-passing mismatch       ok

Creating dump of global objects                             ok

Creating dump of database schemas

ok

Checking for presence of required libraries                 ok

Checking database user is the install user                  ok

Checking for prepared transactions                          ok

If pg_upgrade fails after this point, you must re-initdb the

new cluster before continuing.

Performing Upgrade

------------------

Analyzing all rows in the new cluster                       ok

Freezing all rows on the new cluster                        ok

Deleting files from new pg_clog                             ok

Copying old pg_clog to new server                           ok

Setting next transaction ID and epoch for new cluster       ok

Deleting files from new pg_multixact/offsets                ok

Copying old pg_multixact/offsets to new server              ok

Deleting files from new pg_multixact/members                ok

Copying old pg_multixact/members to new server              ok

Setting next multixact ID and offset for new cluster        ok

Resetting WAL archives                                      ok

Setting frozenxid and minmxid counters in new cluster       ok

Restoring global objects in the new cluster                 ok

Restoring database schemas in the new cluster

ok

Creating newly-required TOAST tables                        ok

Copying user relation files

ok

Setting next OID for new cluster                            ok

Sync data directory to disk                                 ok

Creating script to analyze new cluster                      ok

Creating script to delete old cluster                       ok

Upgrade Complete

----------------

Optimizer statistics are not transferred by pg_upgrade so,

once you start the new server, consider running:

./analyze_new_cluster.sh

Running this script will delete the old cluster‘s data files:

./delete_old_cluster.sh

[[email protected] ~]$

[[email protected] ~]$ ll

total 1208

-rwx------. 1 postgres postgres     749 Apr  9 18:52 analyze_new_cluster.sh

-rwx------. 1 postgres postgres      30 Apr  9 18:52 delete_old_cluster.sh

[[email protected] ~]$

3).使用新版本启动脚本启动数据库

[[email protected] ~]$ exit

logout

[[email protected] pgdata]# /etc/init.d/postgresql start

Starting PostgreSQL: ok

[[email protected] pgdata]# su - postgres

[[email protected] ~]$ psql

psql (9.5.2)

Type "help" for help.

postgres=# \l

List of databases

Name        |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges

--------------------+----------+----------+-------------+-------------+-----------------------

a_authentication   | vincent  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

a_resources        | vincent  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

postgres           | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |

a_server           | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | postgres=CTc/postgres+

|          |          |             |             | =Tc/postgres         +

|          |          |             |             | acent=CTc/postgres

template0          | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +

|          |          |             |             | postgres=CTc/postgres

template1          | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | postgres=CTc/postgres+

|          |          |             |             | =c/postgres

a_security      | uccc     | UTF8     | en_US.UTF-8 | en_US.UTF-8 | a=CTc/uccc        +

|          |          |             |             | =Tc/uccc             +

|          |          |             |             | a=CTc/uccc

(7 rows)

postgres=# \q

4).生产新的统计数据

[[email protected] ~]$ ./analyze_new_cluster.sh

This script will generate minimal optimizer statistics rapidly

so your system is usable, and then gather statistics twice more

with increasing accuracy.  When it is done, your system will

have the default level of optimizer statistics.

If you have used ALTER TABLE to modify the statistics target for

any tables, you might want to remove them and restore them after

running this script because they will delay fast statistics generation.

If you would like default statistics as quickly as possible, cancel

this script and run:

"/opt/pg/9.5/bin/vacuumdb" --all --analyze-only

vacuumdb: processing database "a_authentication": Generating minimal optimizer statistics (1 target)

vacuumdb: processing database "a_resources": Generating minimal optimizer statistics (1 target)

vacuumdb: processing database "postgres": Generating minimal optimizer statistics (1 target)

vacuumdb: processing database "a_server": Generating minimal optimizer statistics (1 target)

vacuumdb: processing database "template1": Generating minimal optimizer statistics (1 target)

vacuumdb: processing database "a_security": Generating minimal optimizer statistics (1 target)

vacuumdb: processing database "a_authentication": Generating medium optimizer statistics (10 targets)

vacuumdb: processing database "a_resources": Generating medium optimizer statistics (10 targets)

vacuumdb: processing database "postgres": Generating medium optimizer statistics (10 targets)

vacuumdb: processing database "a_server": Generating medium optimizer statistics (10 targets)

vacuumdb: processing database "template1": Generating medium optimizer statistics (10 targets)

vacuumdb: processing database "a_security": Generating medium optimizer statistics (10 targets)

vacuumdb: processing database "a_authentication": Generating default (full) optimizer statistics

vacuumdb: processing database "a_resources": Generating default (full) optimizer statistics

vacuumdb: processing database "postgres": Generating default (full) optimizer statistics

vacuumdb: processing database "a_server": Generating default (full) optimizer statistics

vacuumdb: processing database "template1": Generating default (full) optimizer statistics

vacuumdb: processing database "a_security": Generating default (full) optimizer statistics

Done

[[email protected] ~]$

5).旧版本数据清理

可以在新数据库运行一段时间后,执行delete_old_cluster.sh 脚本,删除旧版本PGDATA目录

[[email protected] ~]$ more delete_old_cluster.sh

#!/bin/sh

rm -rf ‘/pgdata94‘

[[email protected] ~]$

时间: 2024-10-30 11:19:36

PG数据库升级步骤说明(pg_dumpall和pg_upgrade)的相关文章

探索Oracle之数据库升级二 11.2.0.3升级到11.2.0.4完整步骤

探索Oracle之数据库升级二  11.2.0.3升级到11.2.0.4完整步骤 说明:         这篇文章主要是记录下单实例环境下Oracle 11.2.0.1升级到11.2.0.3的过程,当然RAC的升级是会有所不同.但是他们每个版本之间升级步骤都是差不多的,先升级Database Software,再升级Oracle Instance. Oracle 11.2.0.4的Patchset No:19852360下载需要有Oracle Support才可以.  Patchset包含有7个

Django1.6版本的PG数据库定义手动升级

Django1.7以后添加了migration功能,数据库定义的升级完全实现自动化,之前是通过一个叫south的app来做的.这篇文章谈一下1.6下的手动更新升级. 1.table create和table delete操作,万幸的是Django即便是旧版本,其table的添加删除,其syncdb命令也可以识别出来. 2.field add和field remove 这两个操作得自己手动来.一般定义名称.类型.非空这些基本属性,因为Django的model会默认增加主键,所以像主键字段的序列这种

使用GoldenGate进行平台迁移和数据库升级(9i->11g)步骤描述

在一个场景中,需要从Solaris SPARC将数据库迁移到Linux X86-64,同时,数据库版本从原有的oracle 9i(9.2.0.5)升级到11g(11.2.0.4)使用OGG的数据同步功能,停机时间的长短主要取决于旧应用断开和新应用对外提供访问之间的切换时间.升级步骤如下: 1. 目标端机器上安装Oracle 11.2.0.4软件,并根据源端的DB设置配置相应的表空间和数据库参数,需要注意的是9i中有些参数在11g中已经废弃或变化:部署应用到新的平台2. 在源和目标端服务器上安装O

数据库升级问题—ORA-39700: database must be opened with UPGRADE option

1. 错误描述 一个数据较长时间未使用了,最近启动时出现如下错误: SQL> startup Oracle instance started. Total System Global Area 4932501504 bytes Fixed Size                  2103096 bytes Variable Size            889194696 bytes Database Buffers        4026531840 bytes Redo Buffers

【转】用PowerDesigner制作数据库升级脚本

[原创]用PowerDesigner制作数据库升级脚本 很多人使用PD的时候就问有没有制作自动升级脚本的功能.其实是有的. 操作原理: 1.保存原来的版本,另存为apm的文件,生成一个Archive Model. 2.生成升级脚本,需要选择原来的版本 操作步骤: 1.打开PDM文件,选择Save as .... 另存为,在弹出的窗口中选择apm的文件类型,输入文件名保存即可. 2.修改相关的数据模型的内容,然后保存. 3.选择DataBase菜单中的modify database... 菜单 4

oracle11g数据库升级

Oracle支持周期 Oracle对自己产品也一样,对于自己的产品在不同的时期,支持的强度是不一样的.大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持) 1.从产品发布为期5年的标准支持服务期-Premier support 2.随后为期3年的延展支持服务期---------extended support 3.接下来进入持久支持服务期--------

SQLServer数据库基础--E-R图、三大范式、数据库设计步骤

本书目标: 了解数据库的基本概念和范式 熟练使用SMSS.T-SQL实现建库.建表.加约束 掌握T-SQL编程,实现功能强大的查询 掌握创建索引.视图,快速访问数据库 熟悉掌握创建存储过程,实现复杂的业务规则 理解触发器的原理,掌握高级的约束 了解SQLServler安全管理 了解数据库的备份与恢复 本章目标: 了解数据库的基本概念 了解数据库设计的步骤 掌握绘制数据库E-R图 理解数据库三大范式 什么是数据库系统? 数据库系统(DBS)是一个以数据库为核心的完整的运行实体, 数据库的组成: 系

【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)

sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的兼容性(经过尝试,此步骤可以省略) 停掉sqlserver 服务,将需要附件的mdf文件替换掉创建数据生成的mdf,删除掉对应的ldf文件 再启动sqlserver 服务 执行

oracle11g数据库升级数据库升级

Oracle对自己产品也一样,对于自己的产品在不同的时期,支持的强度是不一样的.大体分来,支持的强度分为三个级别:Premier Support(最高优先级的支持),Extended Support(中等优先级的支持),Sustaining Support(最低优先级的支持) 1.从产品发布为期5年的标准支持服务期-Premier support 2.随后为期3年的延展支持服务期---------extended support 3.接下来进入持久支持服务期--------------susta