外观
OceanBase 小版本升级
升级前准备
1. 版本检查
查看当前版本
sql
-- 查看 OceanBase 版本
SELECT * FROM oceanbase.V$OB_VERSION;
-- 查看 OBProxy 版本
obproxy -v确认目标版本
- 从 OceanBase 官方网站获取最新的小版本
- 查看版本发布说明,了解版本变更内容
- 确认目标版本与当前版本的兼容性
2. 环境检查
集群状态检查
sql
-- 查看集群状态
SHOW CLUSTER STATUS;
-- 查看节点状态
SELECT svr_ip, status, zone FROM oceanbase.GV$OB_SERVERS;
-- 查看分区副本状态
SELECT * FROM oceanbase.GV$OB_PARTITION_REPLICA WHERE status != 'NORMAL';系统资源检查
sql
-- 查看节点资源使用情况
SELECT svr_ip, cpu_total, cpu_assigned, mem_total/1024/1024/1024 AS mem_total_gb, mem_used/1024/1024/1024 AS mem_used_gb
FROM oceanbase.GV$OB_SERVERS;
-- 查看磁盘使用情况
SELECT svr_ip, disk_total/1024/1024/1024 AS disk_total_gb, disk_used/1024/1024/1024 AS disk_used_gb
FROM oceanbase.GV$OB_SERVERS;3. 数据备份
全量备份
sql
-- 创建全量备份
BACKUP TENANT <tenant-name>;
-- 查看备份状态
SELECT * FROM oceanbase.GV$OB_BACKUP_TASKS WHERE status = 'RUNNING';备份验证
sql
-- 查看备份集
SELECT * FROM oceanbase.GV$OB_BACKUP_SETS;
-- 验证备份完整性
SELECT * FROM oceanbase.GV$OB_BACKUP_VALIDATION;4. 升级工具准备
下载升级包
bash
# 从官方网站下载升级包
wget https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/oceanbase-ce-<version>.rpm
# 验证升级包完整性
md5sum oceanbase-ce-<version>.rpm准备 OBD 工具
bash
# 确保 OBD 版本兼容
obd --version
# 更新 OBD 到最新版本
yum update -y ob-deploy升级流程
1. 使用 OBD 进行滚动升级
升级前准备
bash
# 查看集群当前状态
obd cluster display <cluster-name>
# 检查升级包兼容性
obd cluster check-upgrade <cluster-name> --target-version <target-version>执行滚动升级
bash
# 执行滚动升级
obd cluster upgrade <cluster-name> --target-version <target-version> --rollback
# 查看升级进度
obd cluster display <cluster-name>升级过程监控
bash
# 查看节点升级状态
obd cluster display <cluster-name> --detail
# 查看升级日志
obd cluster logs <cluster-name> observer2. 手动滚动升级
升级步骤
- 暂停业务:如果需要,暂停相关业务
- 升级第一个节点:
- 停止节点上的 OceanBase 服务
- 安装新版本包
- 启动节点上的 OceanBase 服务
- 验证节点状态
- 升级剩余节点:按照相同的步骤升级剩余节点
- 升级 OBProxy:升级 OBProxy 服务
- 恢复业务:恢复相关业务
具体操作
bash
# 1. 停止节点服务
obd server stop <server-ip>:<ssh-port> --force
# 2. 安装新版本包
yum localinstall -y oceanbase-ce-<version>.rpm
# 3. 启动节点服务
obd server start <server-ip>:<ssh-port>
# 4. 验证节点状态
obd cluster display <cluster-name> --detail3. 升级 OBProxy
使用 OBD 升级 OBProxy
bash
# 升级 OBProxy
obd proxy upgrade <proxy-name> --target-version <target-version>
# 验证 OBProxy 版本
obproxy -v手动升级 OBProxy
bash
# 1. 停止 OBProxy 服务
sudo systemctl stop obproxy
# 2. 安装新版本包
yum localinstall -y obproxy-<version>.rpm
# 3. 启动 OBProxy 服务
sudo systemctl start obproxy
# 4. 验证 OBProxy 状态
sudo systemctl status obproxy升级后验证
1. 集群状态验证
基本状态检查
sql
-- 查看集群状态
SHOW CLUSTER STATUS;
-- 查看节点状态
SELECT svr_ip, status, zone, build_version FROM oceanbase.GV$OB_SERVERS;
-- 查看 OBProxy 状态
obproxy -s status分区副本状态检查
sql
-- 查看分区副本状态
SELECT * FROM oceanbase.GV$OB_PARTITION_REPLICA WHERE status != 'NORMAL';
-- 查看分区平衡状态
SELECT * FROM oceanbase.GV$OB_PARTITION_BALANCE_STATUS;2. 业务验证
基本功能验证
sql
-- 执行基本 SQL 操作
SELECT 1;
-- 创建测试表并插入数据
CREATE TABLE test_upgrade (id INT PRIMARY KEY, name VARCHAR(100));
INSERT INTO test_upgrade VALUES (1, 'test');
SELECT * FROM test_upgrade;
DROP TABLE test_upgrade;业务功能验证
- 验证核心业务功能是否正常
- 验证业务性能是否符合要求
- 验证业务数据是否完整
3. 性能验证
性能测试
bash
# 使用 sysbench 进行性能测试
sysbench oltp_read_write --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=<db> --tables=10 --table-size=1000000 prepare
sysbench oltp_read_write --mysql-host=<host> --mysql-port=<port> --mysql-user=<user> --mysql-password=<password> --mysql-db=<db> --tables=10 --table-size=1000000 --threads=64 --time=300 run性能监控
- 监控 CPU、内存、磁盘和网络使用率
- 监控 QPS、TPS 和响应时间
- 监控慢查询数量
升级失败处理
1. 升级失败原因分析
查看升级日志
bash
# 查看 OceanBase 日志
tail -f /home/admin/oceanbase/log/observer.log
# 查看 OBD 升级日志
obd cluster logs <cluster-name> observer常见失败原因
- 版本兼容性问题
- 资源不足
- 网络连接问题
- 配置错误
- 数据不一致
2. 回滚操作
使用 OBD 回滚
bash
# 执行回滚操作
obd cluster rollback <cluster-name>
# 查看回滚进度
obd cluster display <cluster-name>手动回滚
- 停止当前节点服务
- 卸载新版本包
- 安装旧版本包
- 启动节点服务
- 验证回滚结果
3. 问题修复
修复升级失败问题
- 根据日志分析结果,修复升级失败的问题
- 调整升级策略,重新执行升级
- 寻求 OceanBase 技术支持
常见问题(FAQ)
Q1: 小版本升级是否需要停机?
A1: 小版本升级通常可以实现滚动升级,不需要整体停机。滚动升级时,每次只升级一个节点,其他节点继续提供服务,从而实现零停机或近零停机升级。
Q2: 小版本升级需要备份数据吗?
A2: 是的,小版本升级前必须备份数据。虽然小版本升级风险较低,但仍然存在升级失败的可能,备份数据可以确保在升级失败时能够恢复数据。
Q3: 如何选择合适的升级时间?
A3: 选择合适的升级时间需要考虑以下因素:
- 业务低峰期:选择业务负载较低的时间进行升级
- 维护窗口:确保有足够的时间完成升级和验证
- 团队可用性:确保升级期间有足够的运维人员在场
- 回滚时间:确保有足够的时间在升级失败时进行回滚
Q4: 升级后如何验证集群状态?
A4: 升级后验证集群状态的方法:
- 查看集群整体状态是否正常
- 查看所有节点状态是否正常
- 查看分区副本状态是否正常
- 执行基本的 SQL 操作验证功能
- 验证业务功能是否正常
Q5: 升级失败时如何快速回滚?
A5: 升级失败时快速回滚的方法:
- 使用 OBD 提供的回滚功能,快速回滚到升级前的版本
- 如果使用手动升级,卸载新版本包,安装旧版本包,重启服务
- 回滚后验证集群状态和业务功能
- 分析升级失败原因,修复问题后重新尝试升级
