1.查看旧版本编译时参数
/*进入旧库,用以下sql查看编译参数*/ select name, setting, unit from pg_catalog.pg_settings where context = 'internal'
主要注意block_size,lc_collate,lc_ctype,segment_size,wal_block_size,wal_segment_size几个参数
2.上传新版本数据库源码并安装
# tar vxf postgresql-12beta1.tar.gz # cd postgresql-12beta1 # ./configure --prefix=/usr/local/pgsql-12.0 # make -j 2 # make instal # export PATH=$PATH:/usr/local/pgsql-12.0/bin/ # cd contrib/ # make all # make install # su - postgres # cd /usr/local/pgsql-12.0/bin/ # ./initdb -D /pgdata/data_new
3.修改新旧pg_hba.conf文件,确保本地postgres用户可以无密码登录新旧数据库
# su - postgres $ cd /pgdata/data $ vi pg_hba.conf
#如下表明在本地所有用户可以无密码登录所有数据库,默认不用修改
---------------------------------------------------------------------------
# "local" is for Unix domain socket connections only
local all all trust
--------------------------------------------------------------------------
# cd /pgdata/data_ne
4.关闭旧数据库
# su - postgres $ pg_ctl stop
5.升级
# su - postgres $ cd /tmp $ mkdir upgrade_log # -c选项的意思是只检查不升级 $ /usr/local/pgsql-12.0/bin/pg_upgrade -c -b /usr/local/pgsql-10.0/bin -B /usr/local/pgsql-12.0/bin -d /pgdata/data -D /pgdata/data_new # 加入--link,使用硬链接,会增加速度,