24、PostgreSQL 13 升级指南:多种方式实现平滑过渡

PostgreSQL 13 升级指南:多种方式实现平滑过渡

一、常规升级到 PostgreSQL 13

在对 PostgreSQL 进行升级时,为了顺利过渡到目标版本,需要遵循一系列步骤。
1. 查看现有 PostgreSQL 包 :在安装目标版本的包之前,先查看现有系统中安装的 PostgreSQL 包。可以使用以下命令查看 PostgreSQL 9.6 安装的包列表:

$ rpm -qa | grep postgres
postgresql96-libs-9.6.18-1PGDG.rhel7.x86_64
postgresql96-server-9.6.18-1PGDG.rhel7.x86_64
postgresql96-9.6.18-1PGDG.rhel7.x86_64
postgresql96-contrib-9.6.18-1PGDG.rhel7.x86_64
  1. 安装目标版本包 :根据上一步获取的包列表,安装目标版本(这里是 PostgreSQL 13.1)的 rpm 仓库和包。
$ sudo yum install https://yum.postgresql.org/13/redhat/rhel-7.8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
$ sudo yum install postgresql13-server postgresql13
### CentOS 7 上 PostgreSQL 14.2 到 15.11 的无缝升级 #### 准备工作 为了确保从 PostgreSQL 14.2 升级至 15.11 过程中的数据安全性和服务连续性,建议先备份现有数据库。可以使用 `pg_dumpall` 或者通过复制整个集群目录来完成此操作。 ```bash sudo -u postgres pg_dumpall > /tmp/all_databases.sql ``` #### 添加新版本仓库并安装更新包 由于目标是从旧版迁移到新版,在执行具体命令之前需确认已添加最新的官方 YUM 源: ```bash sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm ``` 接着安装新的服务器组件以及客户端工具集[^1]。 #### 执行在线迁移前配置调整 对于希望实现零停机时间的场景来说,推荐采用逻辑复制的方式来进行跨主要版本间的转换。这涉及到创建发布者(Publisher)实例(即当前运行着 v14.2 的机器),订阅者(Subscriber)则会部署最新发布的稳定分支(v15.11)[^2]。 在 Publisher 实例上启用流复制功能: 编辑 `/var/lib/pgsql/14/data/postgresql.conf` 文件设置如下参数: ```ini wal_level = replica max_wal_senders = 3 hot_standby = on ``` 重启 PostgreSQL 使更改生效: ```bash systemctl restart postgresql-14.service ``` #### 创建 Publication 和 Subscription 关系 现在可以在 Publisher 节点定义 publication 并于 Subscriber 端建立 subscription 来同步表结构与增量变更记录。 Publisher 端创建 publication: ```sql CREATE PUBLICATION mypub FOR ALL TABLES; ``` 随后切换到 Subscriber (v15.11), 初始化一个新的集群环境, 安装必要的软件包之后初始化该节点作为备用模式启动. ```bash yum install -y postgresql15-server postgresql15-contrib.x86_64 /usr/pgsql-15/bin/initdb -D /var/lib/pgsql/15/data/ vi /var/lib/pgsql/15/data/postgresql.auto.conf # Add these lines at the end of file. primary_conninfo='host=old_server_ip port=5432 user=repl password=your_password' promote_trigger_file='/tmp/promote.trigger' standby_mode=on recovery_target_timeline='latest' systemctl start postgresql-15.service ``` 最后一步是在 Subscriber 中注册对 Publisher 数据库对象变化的兴趣点——subscription。 ```sql CREATE SUBSCRIPTION mysub CONNECTION 'dbname=mydb host=old_server_ip' PUBLICATION mypub WITH (copy_data=false); ``` 此时两个节点之间应该已经开始进行实时的数据交换了;随着越来越多的事物被处理完毕,最终达到一致状态时就可以考虑将流量逐步转移到较新的系统上去[^3]. #### 测试和验证过程 在整个过程中务必密切监控两套系统的日志文件以捕捉任何潜在错误消息,并定期对比双方之间的差异情况直到完全相同为止。一旦确定一切正常,则可正式对外宣布完成了平滑过渡[^4]. #### 清理遗留资源 当所有应用都已经顺利连接到了新的 PostgreSQL 15.11 后端以后,可以选择停止旧的服务进程并将不再使用的磁盘空间释放出来供其他用途所用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值