ITPub博客

首页 > 数据库 > 国内数据库 > 阿里云Polardb国产数据库补丁升级 实践

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

原创 国内数据库 作者:jaymarco 时间:2020-10-28 21:23:40 0 删除 编辑

一、背景介绍

为了解决当前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" http://127.0.0.1:5000/v1/status?type=visual

经检查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" http://127.0.0.1:5000/v1/status?type=visual

经检查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\"}" http://127.0.0.1:5000/v1/switchover
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" http://127.0.0.1:5000/v1/status?type=visual

检查结果: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\"}" http://127.0.0.1:5000/v1/switchover

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

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

3、   检查集群状态

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

4、   检查 polardb 进程 状态

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


四、总结

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

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

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

请登录后发表评论 登录
全部评论
负责数据库、中间件、大数据等基础软件建设、优化和业务保障工作。具有10年的电信与银行企业一线/二线运维管理经验。目前专注研究云计算、中间件和数据库等领域技术研究。持有Oracle OCP、weblogic OCP、Docker容器、PGCE和阿里云ACP等认证

注册时间:2020-06-22

  • 博文量
    72
  • 访问量
    29681