OceanBase教程FG053-OceanBase补丁安装与回退实战
本文档风哥主要介绍OceanBase数据库补丁安装与回退相关知识,包括OceanBase补丁的概念与类型、OceanBase BP版本与HF热补丁、OceanBase补丁选择原则、OceanBase BP补丁安装、OceanBase HF热补丁安装、OceanBase补丁回退操作等内容,风哥教程参考OceanBase官方文档版本管理、运维指南等内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 OceanBase补丁的概念与类型
OceanBase补丁是指对数据库软件进行修复和优化的更新包。根据补丁的性质和影响范围,可以分为不同类型。更多视频教程www.fgedu.net.cn
- BP版本(Bugfix Patch):修复已知Bug的版本,如V4.2.1 BP1、BP2等
- HF热补丁(Hotfix):紧急修复特定问题的补丁,如V4.2.1 BP1 HF1
- 安全补丁:修复安全漏洞的补丁
- 性能补丁:优化性能的补丁
- 功能补丁:增加新功能的补丁
1.2 OceanBase BP版本与HF热补丁
OceanBase版本号格式为A.B.C-BPx HFy,其中BP和HF代表不同类型的补丁。
版本号格式:A.B.C-BPx HFy
A:主版本号,架构重大变更时更新
B:次版本号,重要功能更新时更新
C:修订版本号,常规问题修复时更新
BPx:第x个Bugfix版本
HFy:第y个热补丁
示例:
– V4.2.1:基础版本
– V4.2.1 BP1:第一个Bugfix版本
– V4.2.1 BP2:第二个Bugfix版本
– V4.2.1 BP1 HF1:BP1版本的第一个热补丁
– V4.2.1 BP1 HF2:BP1版本的第二个热补丁
# BP版本特点
– 包含多个Bug修复
– 需要重启observer
– 通常按月发布
– 建议定期安装
# HF热补丁特点
– 针对特定紧急问题
– 可能不需要重启
– 按需发布
– 紧急情况下使用
1.3 OceanBase补丁策略与规划
制定合理的补丁策略对于保证数据库稳定运行至关重要。
1. BP版本安装策略
– 生产环境:建议安装最新的2-3个BP版本内的版本,风哥提示:。
– 测试环境:可以安装最新BP版本进行验证
– 安装周期:建议每1-2个月安装一次BP补丁
– 跳过策略:可以跳过部分BP,但不能跨大版本
2. HF热补丁安装策略
– 安全HF:发现安全漏洞后立即安装
– 功能HF:评估影响后决定是否安装
– 性能HF:根据业务需要决定是否安装
– 安装前必须在测试环境验证
3. 补丁安装优先级
高优先级:安全补丁、影响业务的Bug修复
中优先级:性能优化、稳定性改进
低优先级:新功能、界面优化
4. 补丁安装时间规划
– 生产环境:选择业务低峰期
– 避开重要业务时段
– 预留充足的回滚时间
– 提前通知业务方
Part02-生产环境规划与建议
2.1 OceanBase补丁选择原则
选择合适的补丁需要考虑多方面因素。
,学习交流加群风哥微信: itpux-com。
1. 根据问题选择补丁
– 如果当前版本存在已知Bug,安装修复该Bug的BP
– 如果遇到紧急问题,安装对应的HF
– 如果为了预防问题,安装最新的BP
2. 根据业务特点选择
– 金融核心系统:保守策略,只安装必要的安全补丁
– 互联网业务:积极策略,及时安装性能优化补丁
– 政务系统:稳定优先,经过充分测试后再安装
3. 根据版本情况选择
– 当前版本较旧:建议先安装最新的BP
– 当前版本较新:可以观望,等下一个BP
– 存在已知严重Bug:立即安装修复补丁
4. 补丁兼容性检查
– 确认补丁与当前版本兼容
– 确认补丁与业务系统兼容
– 检查补丁的依赖关系
2.2 OceanBase补丁测试要求
补丁安装前必须在测试环境进行充分测试。
1. 功能测试
– 基本SQL功能测试
– 事务功能测试
– 存储过程/函数测试
– 触发器测试
2. 性能测试
– 基准性能测试
– 压力测试,学习交流加群风哥QQ113257174。
– 长时间稳定性测试
– 与生产环境对比
3. 业务测试
– 核心业务场景测试
– 边界条件测试
– 异常处理测试
– 兼容性测试
4. 回滚测试
– 验证回滚流程
– 验证回滚后数据完整性
– 验证回滚后功能正常
5. 测试环境要求
– 测试环境应与生产环境配置一致
– 测试数据应接近生产数据
– 测试负载应模拟生产负载
– 测试时间应充分
2.3 OceanBase补丁安装窗口规划
合理规划补丁安装窗口可以最大限度减少对业务的影响。
1. 时间选择
– 选择业务低峰期(凌晨2:00-6:00)
– 避开月末、季末、年末
– 避开促销、活动等重要时段
– 预留充足的安装和回滚时间
2. 人员安排
– 指定补丁安装负责人
– 安排技术支持人员待命
– 通知业务值班人员
– 建立应急沟通渠道
3. 准备工作,更多视频教程www.fgedu.net.cn。
– 提前下载补丁包
– 提前备份数据
– 提前通知业务方
– 准备回滚方案
4. 安装窗口示例
02:00-02:30 准备工作、备份
02:30-03:00 安装补丁
03:00-03:30 验证功能
03:30-04:00 业务验证
04:00-06:00 监控观察
06:00以后 恢复正常
Part03-生产环境项目实施方案
3.1 OceanBase BP补丁安装
3.1.1 BP补丁安装前检查
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+————————————–+
| version() |
+————————————–+
| 4.2.1.6-OceanBase_CE |
+————————————–+
# 2. 检查集群状态
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.DBA_OB_SERVERS;”
+—————+———-+——-+———-+
| SVR_IP | SVR_PORT | ZONE | STATUS |
+—————+———-+——-+———-+
| 192.168.1.101 | 2882 | zone1 | ACTIVE |,更多学习教程公众号风哥教程itpux_com。
| 192.168.1.102 | 2882 | zone2 | ACTIVE |
| 192.168.1.103 | 2882 | zone3 | ACTIVE |
+—————+———-+——-+———-+
# 3. 检查合并状态
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION;”
+——-+——–+—————-+———————+
| ZONE | STATUS | IS_SUSPENDED | LAST_FINISH_TIME |
+——-+——–+—————-+———————+
| zone1 | IDLE | FALSE | 2024-01-20 03:00:00 |
| zone2 | IDLE | FALSE | 2024-01-20 03:00:00 |
| zone3 | IDLE | FALSE | 2024-01-20 03:00:00 |
+——-+——–+—————-+———————+
# 4. 执行备份
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “ALTER SYSTEM BACKUP DATABASE;”
Query OK, 0 rows affected
# 5. 下载补丁包
$ wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-4.2.1.7-xxx.el7.x86_64.rpm
# 6. 验证补丁包
$ rpm -K oceanbase-ce-4.2.1.7-xxx.el7.x86_64.rpm
oceanbase-ce-4.2.1.7-xxx.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
3.1.2 BP补丁安装操作
,from DB视频:www.itpux.com。
# 1. 停止zone1的observer
$ ssh admin@192.168.1.101
$ cd /ob/app/oceanbase
$ ./bin/observer -stop
stop server success.
# 2. 备份原二进制文件
$ cp /ob/app/oceanbase/bin/observer /ob/app/oceanbase/bin/observer.bak.4216
# 3. 安装新补丁包
$ rpm -Uvh oceanbase-ce-4.2.1.7-xxx.el7.x86_64.rpm
Preparing… ################################# [100%]
Updating / installing…
1:oceanbase-ce-4.2.1.7-xxx.el7 ################################# [ 50%]
Cleaning up / removing…
2:oceanbase-ce-4.2.1.6-xxx.el7 ################################# [100%]
# 4. 启动observer
$ ./bin/observer -c /ob/app/oceanbase/etc/observer.cnf
start server success.
# 5. 检查状态
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.DBA_OB_SERVERS WHERE SVR_IP=’192.168.1.101′;”
+—————+———-+——-+———-+
| SVR_IP | SVR_PORT | ZONE | STATUS |
+—————+———-+——-+———-+
| 192.168.1.101 | 2882 | zone1 | ACTIVE |
+—————+———-+——-+———-+
# 6. 升级zone2和zone3(重复上述步骤)
# 7. 验证版本
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+————————————–+
| version() |
+————————————–+
| 4.2.1.7-OceanBase_CE |
+————————————–+
3.2 OceanBase HF热补丁安装
3.2.1 HF热补丁安装
# 1. 查看当前版本
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+————————————–+
| version() |
+————————————–+
| 4.2.1.6-OceanBase_CE |
+————————————–+
# 2. 下载HF热补丁
$ wget https://support.oceanbase.com/hotfix/oceanbase-ce-4.2.1.6-hf1-xxx.tar.gz
# 3. 解压热补丁
$ tar -zxvf oceanbase-ce-4.2.1.6-hf1-xxx.tar.gz -C /soft/
# 4. 安装热补丁
$ cd /soft/oceanbase-ce-4.2.1.6-hf1
$ ./install.sh
[INFO] Installing hotfix for OceanBase 4.2.1.6…
[INFO] Checking current version…
[INFO] Current version: 4.2.1.6
[INFO] Installing hotfix files…
[INFO] Updating shared libraries…
[INFO] Hotfix installed successfully.
[INFO] Please restart observer to apply the hotfix.
# 5. 重启observer应用热补丁
$ cd /ob/app/oceanbase
$ ./bin/observer -stop
$ ./bin/observer -c /ob/app/oceanbase/etc/observer.cnf
# 6. 验证热补丁
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+—————————————-+
| version() |
+—————————————-+
| 4.2.1.6-HF1-OceanBase_CE |
+—————————————-+
# 7. 在所有节点安装热补丁
# 重复上述步骤在zone2和zone3安装
3.3 OceanBase补丁回退操作
3.3.1 BP补丁回退
# 1. 停止observer
$ cd /ob/app/oceanbase
$ ./bin/observer -stop
stop server success.
# 2. 恢复备份的二进制文件
$ mv /ob/app/oceanbase/bin/observer /ob/app/oceanbase/bin/observer.new
$ mv /ob/app/oceanbase/bin/observer.bak.4216 /ob/app/oceanbase/bin/observer
# 3. 重新安装旧版本RPM(如果需要)
$ rpm -Uvh –oldpackage oceanbase-ce-4.2.1.6-xxx.el7.x86_64.rpm
# 4. 启动observer
$ ./bin/observer -c /ob/app/oceanbase/etc/observer.cnf
start server success.
# 5. 检查版本
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+————————————–+
| version() |
+————————————–+
| 4.2.1.6-OceanBase_CE |
+————————————–+
# 6. 检查集群状态
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.DBA_OB_SERVERS;”
+—————+———-+——-+———-+
| SVR_IP | SVR_PORT | ZONE | STATUS |
+—————+———-+——-+———-+
| 192.168.1.101 | 2882 | zone1 | ACTIVE |
| 192.168.1.102 | 2882 | zone2 | ACTIVE |
| 192.168.1.103 | 2882 | zone3 | ACTIVE |
+—————+———-+——-+———-+
3.3.2 HF热补丁回退
# 1. 停止observer
$ cd /ob/app/oceanbase
$ ./bin/observer -stop
# 2. 运行热补丁卸载脚本
$ cd /soft/oceanbase-ce-4.2.1.6-hf1
$ ./uninstall.sh
[INFO] Uninstalling hotfix for OceanBase 4.2.1.6…
[INFO] Restoring original files…
[INFO] Hotfix uninstalled successfully.
[INFO] Please restart observer.
# 3. 启动observer
$ cd /ob/app/oceanbase
$ ./bin/observer -c /ob/app/oceanbase/etc/observer.cnf
# 4. 验证版本
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+————————————–+
| version() |
+————————————–+
| 4.2.1.6-OceanBase_CE |
+————————————–+
# 注意:HF热补丁回退后版本号恢复为原始版本号
Part04-生产案例与实战讲解
4.1 OceanBase BP补丁安装案例
某公司将OceanBase从V4.2.1.6升级到V4.2.1.7 BP补丁的案例:
– 当前版本:V4.2.1.6
– 目标版本:V4.2.1.7 BP1
– 升级原因:修复已知Bug,提升稳定性
– 集群规模:3个Zone,共9台服务器
# 升级前准备
1. 查看Release Notes
– 修复了内存泄漏问题
– 优化了查询性能
– 修复了特定场景下的死锁问题
2. 检查当前版本
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+————————————–+
| version() |
+————————————–+
| 4.2.1.6-OceanBase_CE |
+————————————–+
3. 执行全量备份
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “ALTER SYSTEM BACKUP DATABASE;”
# 备份完成,备份集ID:1002
# 升级执行
1. 升级zone1(2:00-2:30)
– 停止observer:2分钟
– 安装补丁:3分钟
– 启动observer:2分钟
– 验证:3分钟
2. 升级zone2(2:35-3:05)
– 同上
3. 升级zone3(3:10-3:40)
– 同上
# 升级验证
1. 检查版本
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+————————————–+
| version() |
+————————————–+
| 4.2.1.7-OceanBase_CE |
+————————————–+
2. 功能验证
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
CREATE TABLE fgedu_patch_test (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO fgedu_patch_test VALUES (1, ‘test’);
SELECT * FROM fgedu_patch_test;
DROP TABLE fgedu_patch_test;
”
Query OK, 0 rows affected
Query OK, 1 row affected
+—-+——+
| id | name |
+—-+——+
| 1 | test |
+—-+——+
Query OK, 0 rows affected
# 升级成功
4.2 OceanBase HF热补丁安装案例
紧急安装HF热补丁修复安全漏洞的案例:
– 发现安全漏洞CVE-2024-XXXX
– 需要紧急安装安全HF补丁
– 影响范围:所有版本V4.2.1.x
# 安装过程
1. 获取HF补丁
$ wget https://support.oceanbase.com/security/oceanbase-ce-4.2.1.6-security-hf1.tar.gz
2. 验证补丁完整性
$ md5sum oceanbase-ce-4.2.1.6-security-hf1.tar.gz
a1b2c3d4e5f6… oceanbase-ce-4.2.1.6-security-hf1.tar.gz
# 与官方提供的MD5值对比
3. 解压补丁
$ tar -zxvf oceanbase-ce-4.2.1.6-security-hf1.tar.gz -C /soft/
4. 安装补丁(所有节点)
$ cd /soft/oceanbase-ce-4.2.1.6-security-hf1
$ ./install.sh
[INFO] Installing security hotfix…
[INFO] This hotfix fixes CVE-2024-XXXX
[INFO] Installing on 192.168.1.101…
[INFO] Installing on 192.168.1.102…
[INFO] Installing on 192.168.1.103…
[INFO] Security hotfix installed successfully.
5. 重启observer应用补丁
$ cd /ob/app/oceanbase
$ ./bin/observer -stop && ./bin/observer -c /ob/app/oceanbase/etc/observer.cnf
6. 验证补丁
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+—————————————-+
| version() |
+—————————————-+
| 4.2.1.6-SHF1-OceanBase_CE |
+—————————————-+
# 安全漏洞修复完成
4.3 OceanBase补丁回退案例
补丁安装后出现问题,执行回退的案例:
– 安装V4.2.1.7 BP1后
– 发现特定查询性能下降
– 需要回退到V4.2.1.6
# 回退过程
1. 确认问题
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
SELECT /*+ PARALLEL(4) */ COUNT(*) FROM fgedu_large_table;
”
# 执行时间:120秒(之前是30秒)
2. 决定回退
# 通知业务方
# 准备回退
3. 回退zone1
$ ssh admin@192.168.1.101
$ cd /ob/app/oceanbase
$ ./bin/observer -stop
$ mv bin/observer bin/observer.4217
$ mv bin/observer.bak.4216 bin/observer
$ ./bin/observer -c /ob/app/oceanbase/etc/observer.cnf
# 检查状态
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.DBA_OB_SERVERS WHERE SVR_IP=’192.168.1.101′;”
+—————+———-+——-+———-+
| SVR_IP | SVR_PORT | ZONE | STATUS |
+—————+———-+——-+———-+
| 192.168.1.101 | 2882 | zone1 | ACTIVE |
+—————+———-+——-+———-+
4. 回退zone2和zone3
# 重复上述步骤
5. 验证回退
$ obclient -h192.168.1.101 -P2881 -uroot@sys -p -e “SELECT version();”
+————————————–+
| version() |
+————————————–+
| 4.2.1.6-OceanBase_CE |
+————————————–+
6. 验证性能恢复
$ obclient -h192.168.1.101 -P2881 -ufgedu@fgedu_tenant -p -e ”
SELECT /*+ PARALLEL(4) */ COUNT(*) FROM fgedu_large_table;
”
# 执行时间:30秒(恢复正常)
# 回退成功
Part05-风哥经验总结与分享
5.1 OceanBase补丁管理最佳实践
1. 补丁策略
– 制定明确的补丁安装策略
– 建立补丁测试流程
– 建立补丁安装窗口
– 建立补丁回滚流程
2. 补丁跟踪
– 建立补丁安装记录
– 跟踪补丁修复的问题
– 评估补丁影响范围
– 规划补丁安装时间
3. 风险控制
– 生产环境安装前必须在测试环境验证
– 安装前必须做好完整备份
– 安装过程中密切监控
– 安装后充分验证
4. 文档管理
– 记录补丁安装过程
– 记录遇到的问题
– 记录解决方法
– 更新运维文档
5. 沟通协调
– 及时通知业务方
– 建立应急沟通渠道
– 协调技术支持资源
– 及时反馈安装结果
5.2 OceanBase补丁安装检查清单
## 安装前检查
– [ ] 确认补丁与当前版本兼容
– [ ] 阅读补丁Release Notes
– [ ] 在测试环境验证补丁
– [ ] 执行全量备份
– [ ] 备份配置文件
– [ ] 检查集群状态正常
– [ ] 检查合并状态为IDLE
– [ ] 通知业务方
– [ ] 准备回滚方案
## 安装中检查
– [ ] 逐个Zone安装
– [ ] 检查每个节点状态
– [ ] 检查数据同步
– [ ] 记录安装时间
– [ ] 记录遇到的问题
## 安装后检查
– [ ] 检查版本号正确
– [ ] 验证基本功能
– [ ] 验证业务SQL
– [ ] 检查性能指标
– [ ] 持续监控24小时
– [ ] 通知业务方验证
## 回退检查(如需要)
– [ ] 停止补丁安装
– [ ] 恢复备份的二进制文件
– [ ] 重启observer
– [ ] 验证版本恢复
– [ ] 验证功能恢复
– [ ] 通知业务方
5.3 OceanBase补丁常见问题
Q1: 补丁安装失败,提示”version mismatch”
A1: 确认补丁版本与当前版本匹配,检查是否下载了正确的补丁包
Q2: 补丁安装后observer无法启动
A2: 检查日志定位问题,必要时回退到原版本
Q3: 可以跳过BP直接安装最新的吗?
A3: 可以,但要确保升级路径支持,建议按顺序安装
Q4: HF热补丁安装后需要重启吗?
A4: 大多数HF需要重启observer才能生效,具体参考HF说明
Q5: 补丁安装后性能下降怎么办?
A5: 检查是否需要调整参数,必要时回退补丁
Q6: 如何查看已安装的补丁列表?
A6: 使用SELECT version()查看版本号,或查看安装日志
Q7: 补丁安装过程中可以停止吗?
A7: 可以,已安装的节点保持新版本,未安装的保持原版本
Q8: 安全补丁必须立即安装吗?
A8: 建议尽快安装,但也要经过测试,避免引入新问题
Q9: 补丁安装后需要更新统计信息吗?
A9: 一般不需要,但如果涉及优化器改进,建议重新收集
Q10: 补丁回退后数据会丢失吗?
A10: 不会,补丁只修改二进制文件,不影响数据
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
