阿里云Polardb国产数据库补丁升级 实践

网友投稿 561 2023-11-24

一、背景介绍

阿里云Polardb国产数据库补丁升级 实践

为了解决当前polardb-O数据库存在的一个BUG,阿里云官方提供了修复补丁,需要将当前版本2.1.2.4升级到2.1.2.5。本次主题通过此次升级来详细介绍一下阿里云Polardb-O数据库集群补丁整体升级操作过程。

二、Polardb-O数据库信息

2.1 数据库设备信息

Polardb-o数据库集群部署采用1+1+1模式,使用3台主机分别搭建各自服务,下面是polardb-o详细的集群配置信息

PolarDB 数据库

实际地址IP

数据库架构

说明

PolarDB集群

192.168.58.130

1主1从架构

192.168.58.131

   192.168.58.132

CM

集群管控节点

VIP:192.168.58.129

VIP由CM控制连接主库

2.2 Polardb-O部署架构

三、Polardb补丁升级

3.1 升级流程

3.2 环境检查

1、检查数据库集群状态 CM 集群管控节点执行下面命令来检查数据集群状态

curl -H "Content-Type:application/json"

经检查master和standby都是处理running状态,VIP "endpoint"在主节点上,当前主库处于正常状态

2检查主备库运行状态

使用PolarDB 用户分别在主备两个节点检查数据库运行状态:

ps -ef |grep  polar-postgres|grep -v grep |wc -l

经过检查 polardb数据库进程存在,数据库运行正常。

3、  检查主备同步复制状态

由于配置了同步复制,健康检查配置只能在主库检查,备库是无法查询到同步复制状态信息,所以使用下面指令在主库上面检查同步复制状态。

select * from pg_stat_replication ;

经检查polardb主备库的同步复制关系正常,复制状态“streaming”,同步状态为sync强同步。说明同步复制状态正常。

4、  查看当前数据库版本

3.3 数据库备份

1、 数据库物理全备

物理备份使用polardb-O 软件自带备份工具polar_basebackup ,它是以物理文件形式将本地文件与PFS 数据文件进行全量备份。本次备份使用主库来备份,先登录主库后执行下面命令来进行数据全量备份,并将文件备份到备份路径/home/polardb/backups/20201017/

polar_basebackup -D /home/polardb/backups/20201017/base -X stream --progress -v

从上图可以看到,备份日志中输出“ base backup completed ”关键字说明物理全备成功。

2数据库逻辑全备

逻辑备份使用 polardb-O 软件自带备份工具 pg_dumpall ,它是以 sql 形式进行全库备份,同样也是在主库进行数据备份,并将文件备份到备份路径 /home/polardb/backups/20201017/

pg_dumpall>/home/polardb/backups/20201017/polar_data_all_20201017.sql

从上图可以看到,全库备份文件 polar_data_all_20201017.sql 在增长,代表逻辑全备正常。 3.4 升级备库

Polardb-O使用CM集群管控来控制主备之间切换,软件补丁升级时如果优先主库,会导致CM触发主库切换,导致数据库不稳定,势必会影响业务系统正常使用。因此结合当前集群架构考虑优先升级备库,备库停止不会触发CM管控进行主备切换。接下来会详细介绍备库升级全过程。

1、 停止Polardb备库进程

首先用polardb 用户,登录polardb 备库服务器,使用下面命令停止polardb 进程。

pg_ctl stop

检查备库polardb 进程是否成功停止

经检查备库polardb 进程已经被成功停掉,业务暂时无影响,主库可以提供读写服务。

2 备份polardb-o软件

/usr/local 目录下将polardb 旧软件包备份出来,为了防止后面升级过程失败,可以进行备份回退。

sudo cp -r  polardb_o_20200914 polardb_o_20200914.20201017

3 卸载polardb-o软件

在polardb用户下使用sudo方式将polardb安装的rpm包卸载。 

sudo rpm -e PolarDB-O-0200-2.0.0-20200914083756.alios7.x86_64

4、 安装polardb-o软件包

在polardb用户下使用sudo rpm -i命令安装polardb软件包。

sudo unzip PolarDB-O-0200-2.0.0-20201009151903.alios7.x86_64.rpm.zip

sudo rpm -ivh  PolarDB-O-0200-2.0.0-20201009151903.alios7.x86_64.rpm

5、 启动polardb-o备库服务

由于polardb软件升级后,生成的软件目录版本号发生了变化,对应的PGHOME目录也要更新,需要修改 polardb用户环境变量

.bash_profile 文件中的

export PGHOME=/usr/local/polardb_o_20200914   修改成export PGHOME=/usr/local/polardb_o_20201009

source ~/.bash_profile

启动数据库服务

pg_ctl start

从上图可以看出数据库启动成功。

6 检查升级后版本

7、 检查polardb-o备库运行状态

CM 集群管控节点执行下面命令查看数据集群状态:

curl -H "Content-Type:application/json"

经检查polardb的主备运行状态”running”,VIP "endpoint"在主节点上,当前主库处于正常状态

在主库执行下面命令检查数据库同步复制状态

select * from pg_stat_replication ;

经检查polardb主备库的同步复制关系正常,复制状态“streaming”,同步状态为sync强同步。说明同步复制状态正常。

3.5

主备切换

1、

将主库切换成备库

在CM 集群管控服务器上执行切换指令进行主备之间切换操作,这里是将主库切换到polar-node2

节点上面,老主库正常会切换成新备库。

curl -H "Content-Type:application/json" -X POST --data "{\"from\":\"192.168.58.130:5432\",\"to\":\"192.168.58.131:5432\"}"
2、

检查主备是否成功切换

主备切换成功,检查同步复制关系正常。

3、 检查集群状态

备库成功切换成新主库,原来的老主库也正常切换回成备库。

4、 polardb 进程检查

polardb 主备库进程启动正常。

3.6  升级老主库

1. 停止Polardb-O备库进程

登录polardb 老主库服务器,使用polardb 用户执行停止命令

pg_ctl stop

检查老主库polardb

进程是否成功停止

polardb 进程已经被成功停掉,业务暂时无影响,主库可以提供读写服务。

2. 备份polardb-o软件

/usr/local 目录下将polardb 旧软件包备份出来。

sudo cp  -r polardb_o_20200914 polardb_o_20200914.20201017

3. 卸载polardb-o软件

sudo rpm -e PolarDB-O-0200-2.0.0-20200914083756.alios7.x86_64

4. 安装polardb-o软件包

sudo unzip PolarDB-O-0200-2.0.0-20201009151903.alios7.x86_64.rpm.zip

sudo rpm -ivh  PolarDB-O-0200-2.0.0-20201009151903.alios7.x86_64.rpm

5. 启动polardb-o备库服务

由于polardb软件升级后,生成的软件目录版本号发生了变化,对应的PGHOME目录也要更新,需要修改 polardb用户环境变量

.bash_profile 文件中的

export PGHOME=/usr/local/polardb_o_20200914   修改成export PGHOME=/usr/local/polardb_o_20201009

source ~/.bash_profile

启动数据库服务

pg_ctl start

看到以上状态,说明备库 polardb 已经成功正常启动。

6. 检查升级后版本

7. 检查polardb-o老备库运行状态

在CM集群管控节点执行下面命令查看数据集群状态:

curl -H "Content-Type:application/json"

检查结果:master和standby都是running状态,VIP "endpoint"在主节点上,当前主库处于正常状态

在主库执行如下命令检查同步复制状态

select * from pg_stat_replication ;

检查结果:同步复制状态“streaming”,同步状态为sync强同步。以上信息代表同步复制状态正常。

3.7 回切主库

主备库的polardb软件库软件已经升级成功,接下来模拟数据库回切到老主库,在CM管控服务器上面手动切换主备,完成主备切换测试。将192.168.58.131上面的主库切回192.168.58.130。

1、 将主库切换成备库

[polardb@polar-cm ~]$ curl -H "Content-Type:application/json" -X POST --data "{\"from\":\"192.168.58.131:5432\",\"to\":\"192.168.58.130:5432\"}"

 2、 检查主备是否成功切换

主备切换成功后,同步复制关系正常,没有丢失。

3、 检查集群状态

备库成功切换成新主库,原来的老主库也正常切换回成备库。

4、 检查 polardb 进程 状态

查看polardb 数据库进程正常存在。

四、总结

经过此次 Polardb-O 数据库补丁升级实践, Polardb-O 数据库补丁升级过程要比 Oracle 补丁升级简单很多。如按先升备库,让主库提供服务,备库升完,然后将备库切换成主库,再继续提供服务,整体数据库补丁升级过程中不会中断业务。

有需要的朋友可以关注我的公众号,文章每日一更

来自 “ ITPUB博客 ” ,链接:http://blog.itpub-/28833846/viewspace-2730716/,如需转载,请注明出处,否则将追究法律责任。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SQL的表连接怎么实现
下一篇:mysql如何将时分秒转换成秒数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~