macosx下从PostgreSQL 14(PG14)更新到PostgreSQL 15(PG15)
1)修改PG14运行端口
修改PG14的运行端口到15432
sudo vim /Library/PostgreSQL/14/data/postgresql.conf
port = 5432 =>. port = 15432
重启PG14
sudo -u postgres /Library/PostgreSQL/14/bin/pg_ctl -D /Library/PostgreSQL/14/data restart
2) 安装PG15,运行端口默认为5432
3)修改PG15,PG15的pg_hba.conf文件,让本地互信
sudo vim /Library/PostgreSQL/14/data/pg_hba.conf
sudo vim /Library/PostgreSQL/15/data/pg_hba.conf
local all all trust
重启
sudo -u postgres /Library/PostgreSQL/14/bin/pg_ctl -D/Library/PostgreSQL/14/data restart
sudo -u postgres /Library/PostgreSQL/15/bin/pg_ctl -D/Library/PostgreSQL/15/data restart
4)切换目录,停止服务器
升级过程中会有写入,切换到/tmp目录下
cd /tmp
停止服务器
sudo -u postgres /Library/PostgreSQL/12/bin/pg_ctl -D/Library/PostgreSQL/12/data stop
sudo -u postgres /Library/PostgreSQL/13/bin/pg_ctl -D/Library/PostgreSQL/13/data stop
5)升级
先测试
sudo -u postgres /Library/PostgreSQL/13/bin/pg_upgrade -c -d /Library/PostgreSQL/12/data -D /Library/PostgreSQL/13/data -b /Library/PostgreSQL/12/bin -B /Library/PostgreSQL/13/bin -p 15432 -P 5432
若locale不一致,登录PG13,升级一下,安全前可以选择合适的locale值。
UPDATE pg_database SET datcollate='zh_CN.UTF-8', datctype='zh_CN.UTF-8' WHERE datname='template0';
UPDATE pg_database SET datcollate='zh_CN.UTF-8', datctype='zh_CN.UTF-8' WHERE datname='template1';
UPDATE pg_database SET datcollate='zh_CN.UTF-8', datctype='zh_CN.UTF-8' WHERE datname='postgres';
select datname, datcollate, datctype from pg_database;
没有报错后,再执行
sudo -u postgres /Library/PostgreSQL/13/bin/pg_upgrade -v -d /Library/PostgreSQL/12/data -D /Library/PostgreSQL/13/data -b /Library/PostgreSQL/12/bin -B /Library/PostgreSQL/13/bin -p 15432 -P 5432