由于业务需求,需要升级 postgres
- 安装
psql13
sudo apt-get install postgresql-13 postgresql-server-dev-13
如果提示没有找到包,可以换源
换源步骤:
sudo sh -c 'echo "deb https://mirrors.bfsu.edu.cn/postgresql/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://mirrors.bfsu.edu.cn/postgresql/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
完成之后,再执行安装命令。
- 停止 PostgreSQL 服务
sudo systemctl stop postgresql.service
- 进入
postgres
用户
sudo su postgres
- 开始升级
sudo /usr/lib/postgresql/13/bin/pg_upgrade \
-d /var/lib/postgresql/12/main \
-D /var/lib/postgresql/13/main \
-b /usr/lib/postgresql/12/bin \
-B /usr/lib/postgresql/13/bin \
-o '-c config_file=/etc/postgresql/12/main/postgresql.conf' \
-O '-c config_file=/etc/postgresql/13/main/postgresql.conf'
- 这里可能会有权限问题,加上权限就好了。
chmod 750 /var/lib/postgresql/12/main
- 如果磁盘空间不够数据库的2倍,请加上
--link
参数
如果还有问题,注意看日志,日志位置:/var/lib/postgresql/pg_upgrade_server.log
,根据日志的问题来操作。
- 把新的PostgreSQL端口改掉。
sudo vim /etc/postgresql/13/main/postgresql.conf
# ...and change "port = 5433" to "port = 5432"
sudo vim /etc/postgresql/12/main/postgresql.conf
# ...and change "port = 5432" to "port = 5433"
- 启动 PostgreSQL 服务
sudo systemctl start postgresql.service