在CentOS中升级PostgreSQL的步骤如下:
备份数据库 在进行任何升级之前,强烈建议先备份你的数据库。
pg_dumpall -U postgres > /path/to/backup/all_databases.sql
更新yum仓库 确保你的yum仓库是最新的。
sudo yum update
添加PostgreSQL官方仓库 如果你还没有添加PostgreSQL的官方仓库,可以按照以下步骤操作:
sudo tee /etc/yum.repos.d/pgdg.repo <<EOF
[pgdg96] name=PostgreSQL $releasever - $basearch baseurl=https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm enabled=1 gpgcheck=1 gpgkey=https://www.postgresql.org/media/keys/ACCC4CF8.asc EOF
4. **安装最新版本的PostgreSQL**
```bash
sudo yum install postgresql13-server
初始化数据库集群 如果是新安装的PostgreSQL,需要初始化数据库集群。
sudo postgresql-setup --initdb
启动并启用PostgreSQL服务
sudo systemctl start postgresql-13
sudo systemctl enable postgresql-13
升级数据库
使用pg_upgrade工具来升级现有的数据库。
/usr/pgsql-13/bin/pg_upgrade \
--old-datadir=/var/lib/pgsql/9.6/data \
--new-datadir=/var/lib/pgsql/13/data \
--old-bindir=/usr/bin \
--new-bindir=/usr/pgsql-13/bin \
--old-sysctl=-1 \
--new-sysctl=-1
重启PostgreSQL服务 升级完成后,重启PostgreSQL服务以应用更改。
sudo systemctl restart postgresql-13
如果你需要更灵活的控制或者yum仓库中没有你需要的版本,可以考虑从源码编译安装。
备份数据库 同方法一。
下载并解压新版本的PostgreSQL源码
wget https://ftp.postgresql.org/pub/source/v13.6/postgresql-13.6.tar.gz
tar -zxvf postgresql-13.6.tar.gz
cd postgresql-13.6
安装依赖包
sudo yum install -y readline-devel zlib-devel
编译并安装
./configure --prefix=/usr/local/pgsql-13
make
sudo make install
初始化新的数据目录
sudo mkdir /var/lib/pgsql/13/data
sudo chown postgres:postgres /var/lib/pgsql/13/data
sudo /usr/local/pgsql-13/bin/initdb -D /var/lib/pgsql/13/data
停止旧版本的PostgreSQL服务
sudo systemctl stop postgresql-9.6
迁移数据
使用pg_dumpall导出数据,并使用psql导入到新版本的数据目录。
sudo -u postgres /usr/local/pgsql-13/bin/pg_dumpall > /tmp/all_databases.sql
sudo -u postgres /usr/local/pgsql-13/bin/psql -d postgres -f /tmp/all_databases.sql
启动新版本的PostgreSQL服务
sudo systemctl start postgresql-13
清理旧版本 删除旧版本的PostgreSQL安装和数据目录。
sudo yum remove postgresql96-server
sudo rm -rf /var/lib/pgsql/9.6
sudo rm -rf /usr/lib64/pgsql
通过以上步骤,你应该能够在CentOS上成功升级PostgreSQL。