app开发者平台在数字化时代的重要性与发展趋势解析
561
2023-11-24
一、背景介绍
为了解决当前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强同步。说明同步复制状态正常。
主备切换
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~