postgresql大版本升级

Posted monkey6

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql大版本升级相关的知识,希望对你有一定的参考价值。

postgresql升级有三种方式:pg_dump与restore,pg_upgrade,pg的Logical Replication,本文主要讲述pg_upgrade方式

步骤:

1.下载并安装新版数据库

    下载:https://ftp.postgresql.org/pub/source/   

     安装:

cd /data/soft/
tar vxf postgresql-11.2.tar.gz
cd postgresql-11.2
#新数据库的监听端口不要与旧数据库监听端口相同
./configure --prefix=/usr/local/pgsql112 --with-pgport=5433
make -j `grep processor /proc/cpuinfo |wc -l`
make install

2.初始化新数据库

#创建新的数据文件目录
mkdir /pgdata/data112
chown -R postgres.postgres /pgdata/data112
su - postgres
cd /usr/local/pgsql112/
#字符集需要与旧库的字符集相同
#pgsql -l可以查看数据库字符集
#如果不设置locale,那么与运行initdb的系统环境中的locale相同,可以通过locale -a查看可用的locale,locale包含货币,日期,字符集等内容,-E制定字符集
./initdb  -D /pgdata/data112/   -U postgres

3.新旧数据库修改pg_hba.conf

   在新旧数据库的升级过程中,新旧数据库会互相连接,为避免频繁认证,修改本地postgres认证

vi pg_hba.conf
#################################################
# "local" is for Unix domain socket connections only
local   all             all                                     trust
#修改为
# "local" is for Unix domain socket connections only
local   all             postgres                                     trust

4.停掉旧数据库

/usr/local/pgsql10.4/bin/pg_ctl stop -D /pgdata/data

5.使用pg_upgrade开始升级

   5.1.创建升级目录

          這個目錄postgres要有權限,并且不能夠在數據庫文件目錄中

          $ cd /tmp

          $ mkdir upgrade_log

    5.2.升级前检查

           $ /usr/local/pgsql112/bin/pg_upgrade -c -b /usr/local/pgsql104/bin -B /usr/local/pgsql112/bin -d /pgdata/data -D /pgdata/data112 -p 5432 -P 5433

           小写字母之后都是旧数据库的,大写字母之后都是新数据库的,使用新数据库的pg_upgrade程序

    5.3.升级

          不适用--link方式,即将旧数据库的文件copy到新数据库目录中,使用link的话,不需要copy,直接使用硬链接

          $ /usr/local/pgsql112/bin/pg_upgrade -b /usr/local/pgsql104/bin -B /usr/local/pgsql112/bin -d /pgdata/data -D /pgdata/data112 -p 5432 -P 5433

          或

          $ /usr/local/pgsql112/bin/pg_upgrade --link -b /usr/local/pgsql104/bin -B /usr/local/pgsql112/bin -d /pgdata/data -D /pgdata/data112 -p 5432 -P 5433

     5.4.执行上一步生成的两个文件

           上一步执行之后,会在当前目录下生成两个文件,一个收集统计信息,一个删除旧数据文件,根据实际情况执行

          ./analyze_new_cluster.sh

          ./delete_old_cluster.sh

6.修改配置文件,环境变量等

7.插件的升级

   如果旧数据库安装了插件,那么在5.1检查的过程中会报错

   7.1.查看旧数据库的插件

         $ psql

         postgres=# dx

   7.2.卸载插件

         postgres=# drop extenions extension_name

   7.3.升级完成后重新安装插件

 

以上是关于postgresql大版本升级的主要内容,如果未能解决你的问题,请参考以下文章

postgresql大版本升级

postgresql如何升级版本

PostgreSQL升级之pg_upgrade升级

postgresql 数据库版本升级 11.5升级14

postgresql 数据库版本升级 11.5升级14

postgresql 数据库版本升级 11.5升级14