1. 首页 > 国产数据库教程 > OceanBase教程 > 正文

OceanBase教程FG175-OceanBase周期性运维任务

本文档风哥主要介绍OceanBase数据库的周期性运维任务,包括日常维护、定期检查、备份恢复等。风哥教程参考OceanBase官方文档OceanBase运维管理手册、OceanBase备份恢复手册等。

通过本文的学习,您将了解如何制定和执行OceanBase的周期性运维任务,确保数据库的稳定运行。

目录大纲

Part01-基础概念与理论知识

1.1 周期性运维任务基本概念

周期性运维任务是指按照一定的时间间隔定期执行的运维操作,用于确保OceanBase数据库的稳定运行。具有以下特点:

  • 定期性:按照固定的时间间隔执行
  • 预防性:预防问题的发生
  • 系统性:覆盖数据库的各个方面
  • 可重复性:可以重复执行的操作

1.2 周期性运维任务分类

OceanBase的周期性运维任务主要包括:

  • 日常运维任务:每天执行的任务,如日志清理、状态检查等
  • 周运维任务:每周执行的任务,如备份、性能分析等
  • 月运维任务:每月执行的任务,如索引重建、统计信息更新等
  • 季度运维任务:每季度执行的任务,如系统升级、数据归档等
  • 年度运维任务:每年执行的任务,如系统评估、架构优化等

1.3 周期性运维任务执行频率

周期性运维任务的执行频率建议:

  • 日常运维任务:每天执行1-2次
  • 周运维任务:每周执行1次
  • 月运维任务:每月执行1次
  • 季度运维任务:每季度执行1次
  • 年度运维任务:每年执行1次

风哥提示:周期性运维任务是确保OceanBase数据库稳定运行的重要手段,需要根据实际情况制定合理的执行计划

Part02-生产环境规划与建议

2.1 周期性运维任务规划

周期性运维任务规划的建议:

  • 制定任务清单:根据数据库的规模和重要性,制定详细的任务清单
  • 明确执行时间:为每个任务明确执行时间,避免影响业务
  • 分配执行人员:指定专人负责执行运维任务
  • 建立执行记录:记录每次任务的执行情况,便于跟踪
  • 制定应急预案:针对任务执行过程中可能出现的问题,制定应急预案

2.2 周期性运维任务执行建议

周期性运维任务执行的建议:

  • 选择合适的时间:选择业务低峰期执行运维任务
  • 做好备份:在执行重要任务前,做好数据备份
  • 监控执行过程:实时监控任务的执行过程,及时发现问题
  • 验证执行结果:任务执行完成后,验证执行结果
  • 及时处理异常:如果任务执行过程中出现异常,及时处理

,风哥提示:。

Part03-生产环境项目实施方案

3.1 日常运维任务

日常运维任务的内容:

# 1. 检查集群状态

obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.DBA_OB_CLUSTERS;"
                    

+——————-+—————————-+—————————-+——————-+—————–+———-+——————-+—————+——————+—————+
| CLUSTER_NAME | CREATE_TIME | MODIFY_TIME | STATUS | TENANT_MODE | PRIMARY_ZONE | ZONE_LIST | SERVER_LIST | READONLY_ZONE_LIST | LOG_LEVEL |
+——————-+—————————-+—————————-+——————-+—————–+———-+——————-+—————+——————+—————+
| obcluster | 2026-04-01 10:00:00.000000 | 2026-04-01 10:00:00.000000 | NORMAL | COMPATIBLE | zone1 | zone1,zone2,zone3 | 192.168.1.1:2881,192.168.1.2:2881,192.168.1.3:2881 | NULL | INFO |
+——————-+—————————-+—————————-+——————-+—————–+———-+——————-+—————+——————+—————+

# 2. 检查节点状态

obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.DBA_OB_SERVERS;"
                    

+—————-+———-+—————+——–+—————————-+—————————-+——–+————————+——————-+——————-+——–+
| SVR_IP | SVR_PORT | ZONE | STATUS | START_SERVICE_TIME | STOP_TIME | SQL_PORT | WITH_ROOTSERVICE | BLOCK_MIGRATE_IN | BLOCK_MIGRATE_OUT | ROLE |
+—————-+———-+—————+——–+—————————-+—————————-+——–+————————+——————-+——————-+——–+,学习交流加群风哥微信: itpux-com。
| 192.168.1.1 | 2882 | zone1 | ACTIVE | 2026-04-01 10:00:00.000000 | NULL | 2881 | TRUE | FALSE | FALSE | LEADER |
| 192.168.1.2 | 2882 | zone2 | ACTIVE | 2026-04-01 10:00:00.000000 | NULL | 2881 | FALSE | FALSE | FALSE | FOLLOWER |
| 192.168.1.3 | 2882 | zone3 | ACTIVE | 2026-04-01 10:00:00.000000 | NULL | 2881 | FALSE | FALSE | FALSE | FOLLOWER |
+—————-+———-+—————+——–+—————————-+—————————-+——–+————————+——————-+——————-+——–+

# 3. 清理日志

# 清理Observer日志
find /ob/app/log -name "observer.log.*" -mtime +7 -delete

# 清理选举日志
find /ob/app/log -name "election.log.*" -mtime +7 -delete

# 清理RootService日志
find /ob/app/log -name "rootservice.log.*" -mtime +7 -delete
                    

# 无输出,表示清理成功

3.2 周运维任务

周运维任务的内容:

# 1. 执行备份

# 全量备份
oceanbase.backup --cluster=obcluster --tenant=fgedudb --backup_type=full --backup_path=/ob/backup
                    

Backup started successfully. Backup ID: backup_20260409_100000

# 2. 分析性能

,学习交流加群风哥QQ113257174。

# 查看慢SQL
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.V$OB_SQL_AUDIT WHERE execute_time > 0.1 ORDER BY execute_time DESC LIMIT 10;"
                    

+———-+———-+———————+———————+————+————-+———-+———-+—————-+—————-+
| SQL_ID | USERNAME | START_TIME | END_TIME | EXECUTE_TIME | RETURN_ROWS | CPU_TIME | ELAPSED_TIME | SQL_TEXT |
+———-+———-+———————+———————+————+————-+———-+———-+—————-+—————-+
| 87654321 | fgedu | 2026-04-09 10:00:00 | 2026-04-09 10:00:05 | 5.0 | 10000 | 2.0 | 5.0 | SELECT * FROM fgedu_order WHERE create_time BETWEEN ‘2026-01-01’ AND ‘2026-04-09’ |
+———-+———-+———————+———————+————+————-+———-+———-+—————-+—————-+

# 3. 检查数据库空间

obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.V$OB_SYSSTAT WHERE name LIKE '%disk%' ORDER BY value DESC LIMIT 10;"
                    

+——————+———-+—————-+—————-+
| NAME | VALUE | STATISTIC# | CLASS |
+——————+———-+—————-+—————-+
| disk_usage | 10.0 | 1 | 1 |
| log_disk_usage | 5.0 | 2 | 1 |
+——————+———-+—————-+—————-+

3.3 月运维任务

月运维任务的内容:

# 1. 更新统计信息

obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ANALYZE TABLE fgedu_order COMPUTE STATISTICS;"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ANALYZE TABLE fgedu_user COMPUTE STATISTICS;"
                    

Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.05 sec),更多视频教程www.fgedu.net.cn。

# 2. 重建索引

obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ALTER INDEX idx_fgedu_order_create_time REBUILD;"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ALTER INDEX idx_fgedu_user_email REBUILD;"
                    

Query OK, 0 rows affected (0.08 sec)
Query OK, 0 rows affected (0.08 sec)

# 3. 检查数据一致性

obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.DBA_OB_PARTITIONS WHERE status != 'NORMAL';"
                    

Empty set (0.00 sec)

3.4 季度运维任务

季度运维任务的内容:

# 1. 系统升级

# 检查当前版本
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT version();"

# 执行升级
# 注意:升级前需要备份数据
# oceanbase.upgrade --cluster=obcluster --version=4.2.0.0
                    

+———–+,更多学习教程公众号风哥教程itpux_com。
| version() |
+———–+
| 4.1.0.0 |
+———–+

# 2. 数据归档

# 创建归档表
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "CREATE TABLE fgedu_order_archive LIKE fgedu_order;"

# 归档数据
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "INSERT INTO fgedu_order_archive SELECT * FROM fgedu_order WHERE create_time < DATE_SUB(NOW(), INTERVAL 1 YEAR);"

# 删除归档数据
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "DELETE FROM fgedu_order WHERE create_time < DATE_SUB(NOW(), INTERVAL 1 YEAR);"
                    

Query OK, 0 rows affected (0.05 sec)
Query OK, 1000 rows affected (0.10 sec)
Query OK, 1000 rows affected (0.15 sec)

Part04-生产案例与实战讲解

,from DB视频:www.itpux.com。

4.1 日常运维任务实战

日常运维任务的实战案例:

场景描述

某电商系统的OceanBase数据库需要执行日常运维任务,确保系统的稳定运行。

实施步骤

  1. 检查集群状态
  2. 检查节点状态
  3. 清理日志
  4. 检查告警

# 1. 编写日常运维脚本

#!/bin/bash
# daily_maintenance.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

echo "执行日常运维任务开始:$(date)"

# 检查集群状态
echo "1. 检查集群状态"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.DBA_OB_CLUSTERS;"

# 检查节点状态
echo "2. 检查节点状态"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.DBA_OB_SERVERS;"

# 清理日志
echo "3. 清理日志"
find /ob/app/log -name "observer.log.*" -mtime +7 -delete
find /ob/app/log -name "election.log.*" -mtime +7 -delete
find /ob/app/log -name "rootservice.log.*" -mtime +7 -delete

# 检查告警
echo "4. 检查告警"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.V$OB_ALERT_HISTORY WHERE severity = 'ERROR' AND timestamp > NOW() - INTERVAL 24 HOUR;"

echo "执行日常运维任务结束:$(date)"
                    

# 2. 执行日常运维脚本

chmod +x /ob/app/scripts/daily_maintenance.sh
/ob/app/scripts/daily_maintenance.sh
                    

执行日常运维任务开始:2026-04-09 10:00:00
1. 检查集群状态
+-------------------+----------------------------+----------------------------+-------------------+-----------------+----------+-------------------+---------------+------------------+---------------+
| CLUSTER_NAME | CREATE_TIME | MODIFY_TIME | STATUS | TENANT_MODE | PRIMARY_ZONE | ZONE_LIST | SERVER_LIST | READONLY_ZONE_LIST | LOG_LEVEL |
+-------------------+----------------------------+----------------------------+-------------------+-----------------+----------+-------------------+---------------+------------------+---------------+
| obcluster | 2026-04-01 10:00:00.000000 | 2026-04-01 10:00:00.000000 | NORMAL | COMPATIBLE | zone1 | zone1,zone2,zone3 | 192.168.1.1:2881,192.168.1.2:2881,192.168.1.3:2881 | NULL | INFO |
+-------------------+----------------------------+----------------------------+-------------------+-----------------+----------+-------------------+---------------+------------------+---------------+
2. 检查节点状态
+----------------+----------+---------------+--------+----------------------------+----------------------------+--------+------------------------+-------------------+-------------------+--------+
| SVR_IP | SVR_PORT | ZONE | STATUS | START_SERVICE_TIME | STOP_TIME | SQL_PORT | WITH_ROOTSERVICE | BLOCK_MIGRATE_IN | BLOCK_MIGRATE_OUT | ROLE |
+----------------+----------+---------------+--------+----------------------------+----------------------------+--------+------------------------+-------------------+-------------------+--------+
| 192.168.1.1 | 2882 | zone1 | ACTIVE | 2026-04-01 10:00:00.000000 | NULL | 2881 | TRUE | FALSE | FALSE | LEADER |
| 192.168.1.2 | 2882 | zone2 | ACTIVE | 2026-04-01 10:00:00.000000 | NULL | 2881 | FALSE | FALSE | FALSE | FOLLOWER |
| 192.168.1.3 | 2882 | zone3 | ACTIVE | 2026-04-01 10:00:00.000000 | NULL | 2881 | FALSE | FALSE | FALSE | FOLLOWER |
+----------------+----------+---------------+--------+----------------------------+----------------------------+--------+------------------------+-------------------+-------------------+--------+
3. 清理日志
4. 检查告警
Empty set (0.00 sec)
执行日常运维任务结束:2026-04-09 10:05:00

4.2 周运维任务实战

周运维任务的实战案例:

场景描述

某电商系统的OceanBase数据库需要执行周运维任务,包括备份、性能分析等。

实施步骤

  1. 执行全量备份
  2. 分析性能
  3. 检查数据库空间

# 1. 编写周运维脚本

#!/bin/bash
# weekly_maintenance.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

echo "执行周运维任务开始:$(date)"

# 执行全量备份
echo "1. 执行全量备份"
oceanbase.backup --cluster=obcluster --tenant=fgedudb --backup_type=full --backup_path=/ob/backup

# 分析性能
echo "2. 分析性能"
echo "慢SQL分析:"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.V$OB_SQL_AUDIT WHERE execute_time > 0.1 ORDER BY execute_time DESC LIMIT 10;"

# 检查数据库空间
echo "3. 检查数据库空间"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.V$OB_SYSSTAT WHERE name LIKE '%disk%' ORDER BY value DESC LIMIT 10;"

echo "执行周运维任务结束:$(date)"
                    

# 2. 执行周运维脚本

chmod +x /ob/app/scripts/weekly_maintenance.sh
/ob/app/scripts/weekly_maintenance.sh
                    

执行周运维任务开始:2026-04-09 10:00:00
1. 执行全量备份
Backup started successfully. Backup ID: backup_20260409_100000
2. 分析性能
慢SQL分析:
+———-+———-+———————+———————+————+————-+———-+———-+—————-+—————-+
| SQL_ID | USERNAME | START_TIME | END_TIME | EXECUTE_TIME | RETURN_ROWS | CPU_TIME | ELAPSED_TIME | SQL_TEXT |
+———-+———-+———————+———————+————+————-+———-+———-+—————-+—————-+
| 87654321 | fgedu | 2026-04-09 10:00:00 | 2026-04-09 10:00:05 | 5.0 | 10000 | 2.0 | 5.0 | SELECT * FROM fgedu_order WHERE create_time BETWEEN ‘2026-01-01’ AND ‘2026-04-09’ |
+———-+———-+———————+———————+————+————-+———-+———-+—————-+—————-+
3. 检查数据库空间
+——————+———-+—————-+—————-+
| NAME | VALUE | STATISTIC# | CLASS |
+——————+———-+—————-+—————-+
| disk_usage | 10.0 | 1 | 1 |
| log_disk_usage | 5.0 | 2 | 1 |
+——————+———-+—————-+—————-+
执行周运维任务结束:2026-04-09 10:30:00

4.3 月运维任务实战

月运维任务的实战案例:

场景描述

某电商系统的OceanBase数据库需要执行月运维任务,包括更新统计信息、重建索引等。

实施步骤

  1. 更新统计信息
  2. 重建索引
  3. 检查数据一致性

# 1. 编写月运维脚本

#!/bin/bash
# monthly_maintenance.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

echo "执行月运维任务开始:$(date)"

# 更新统计信息
echo "1. 更新统计信息"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ANALYZE TABLE fgedu_order COMPUTE STATISTICS;"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ANALYZE TABLE fgedu_user COMPUTE STATISTICS;"

# 重建索引
echo "2. 重建索引"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ALTER INDEX idx_fgedu_order_create_time REBUILD;"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Dfgedudb -e "ALTER INDEX idx_fgedu_user_email REBUILD;"

# 检查数据一致性
echo "3. 检查数据一致性"
obclient -h192.168.1.1 -P2881 -ufgedu -pfgedu123 -Doceanbase -e "SELECT * FROM oceanbase.DBA_OB_PARTITIONS WHERE status != 'NORMAL';"

echo "执行月运维任务结束:$(date)"
                    

# 2. 执行月运维脚本

chmod +x /ob/app/scripts/monthly_maintenance.sh
/ob/app/scripts/monthly_maintenance.sh
                    

执行月运维任务开始:2026-04-09 10:00:00
1. 更新统计信息
Query OK, 0 rows affected (0.05 sec)
Query OK, 0 rows affected (0.05 sec)
2. 重建索引
Query OK, 0 rows affected (0.08 sec)
Query OK, 0 rows affected (0.08 sec)
3. 检查数据一致性
Empty set (0.00 sec)
执行月运维任务结束:2026-04-09 10:15:00

Part05-风哥经验总结与分享

5.1 周期性运维任务最佳实践

OceanBase周期性运维任务的最佳实践:

  • 制定合理的执行计划:根据数据库的规模和重要性,制定合理的执行计划
  • 自动化执行:使用脚本自动化执行运维任务,提高效率
  • 选择合适的时间:选择业务低峰期执行运维任务,减少对业务的影响
  • 做好备份:在执行重要任务前,做好数据备份
  • 监控执行过程:实时监控任务的执行过程,及时发现问题
  • 验证执行结果:任务执行完成后,验证执行结果
  • 及时处理异常:如果任务执行过程中出现异常,及时处理
  • 建立执行记录:记录每次任务的执行情况,便于跟踪

5.2 常见问题与解决方案

周期性运维任务执行中常见的问题与解决方案:

# 1. 任务执行超时
- 症状:运维任务执行时间过长,影响业务
- 解决方案:优化任务执行时间,选择合适的执行时间

# 2. 任务执行失败
- 症状:运维任务执行失败
- 解决方案:检查任务执行日志,分析失败原因

# 3. 备份失败
- 症状:备份任务执行失败
- 解决方案:检查备份路径权限,确保空间充足

# 4. 性能分析结果异常
- 症状:性能分析结果显示异常
- 解决方案:深入分析异常原因,优化数据库性能

# 5. 空间不足
- 症状:数据库空间不足
- 解决方案:清理无用数据,扩展存储空间
                

风哥提示:周期性运维任务是确保OceanBase数据库稳定运行的重要手段,需要定期执行并及时处理发现的问题

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息