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

OceanBase教程FG101-OceanBase DBA日常工作流程

本文档风哥主要介绍OceanBase DBA的日常工作流程,包括OceanBase DBA的角色与职责、日常工作任务分类、工作流程原则、日常工作时间规划、工具与准备工作、检查清单设计、早间例行检查、日常维护操作、事件响应与处理等内容,风哥教程参考OceanBase官方文档系统管理员手册、监控与运维等内容编写,适合DBA人员在学习和工作中使用。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 OceanBase DBA的角色与职责

OceanBase DBA(数据库管理员)是负责OceanBase数据库系统的安装、配置、监控、维护、优化和故障处理的专业人员。OceanBase DBA的主要职责包括:

  • 数据库安装与配置:负责OceanBase数据库的安装、初始化和配置
  • 监控与告警:监控数据库的运行状态,及时处理告警
  • 性能优化:优化数据库性能,包括SQL优化、参数调优等
  • 备份与恢复:制定并执行备份策略,确保数据安全
  • 故障处理:及时处理数据库故障,确保系统稳定运行
  • 用户与权限管理:管理数据库用户和权限
  • 容量规划:根据业务需求进行容量规划
  • 文档与培训:编写运维文档,培训其他团队成员

1.2 OceanBase DBA日常工作任务分类

OceanBase DBA的日常工作任务可以分为以下几类:

  • 例行检查:每日、每周、每月的例行检查
  • 日常维护:数据库的日常维护操作
  • 性能优化:数据库性能的监控和优化
  • 故障处理:数据库故障的处理和恢复
  • 变更管理:数据库结构和参数的变更
  • 备份恢复:数据库备份和恢复操作
  • 容量管理:数据库容量的监控和规划
  • 安全管理:数据库安全的维护和加固

1.3 OceanBase DBA工作流程原则

OceanBase DBA的工作流程应遵循以下原则:

  • 预防性维护:定期进行预防性维护,减少故障发生
  • 标准化操作:制定标准化的操作流程,确保操作的一致性和安全性
  • 文档化:详细记录所有操作和变更,便于问题追溯和知识传承
  • 自动化:尽可能实现自动化操作,提高工作效率
  • 持续优化:不断优化数据库性能和运维流程
  • 安全第一:确保数据库的安全性和数据的完整性

Part02-生产环境规划与建议

2.1 OceanBase DBA日常工作时间规划

OceanBase DBA的日常工作时间规划建议如下:

# 每日工作时间规划

## 早间(9:00-10:30)
– 9:00-9:30:查看监控告警,处理紧急问题
– 9:30-10:30:执行早间例行检查

## 上午(10:30-12:00)
– 10:30-11:30:处理日常维护任务
– 11:30-12:00:性能监控和分析

## 下午(14:00-17:30)
– 14:00-15:00:处理变更请求和故障
– 15:00-16:00:优化工作和容量规划,风哥提示:。
– 16:00-17:00:文档更新和知识整理
– 17:00-17:30:晚间例行检查

## 晚间/夜间
– 20:00:检查自动备份状态
– 22:00:检查系统状态(如有必要)
– 24:00:监控夜间批处理任务

2.2 OceanBase DBA工具与准备工作

OceanBase DBA需要准备的工具和环境如下:

# OceanBase DBA必备工具

## 监控工具
– Grafana + Prometheus:监控数据库性能指标
– OCP(OceanBase云平台):集群管理和监控
– Zabbix:系统级监控

## 管理工具
– ODC(OceanBase开发者中心):SQL开发和管理
– OBD(OceanBase Deployer):部署和管理
– obclient:命令行客户端

## 备份工具
– OBS(对象存储服务):备份存储
– 本地备份脚本:自动化备份

## 诊断工具,学习交流加群风哥微信: itpux-com。
– AWR报告:性能分析
– ASH报告:会话历史分析
– 日志分析工具:故障诊断

## 其他工具
– 自动化脚本:日常检查和维护
– 文档工具:记录和分享
– 沟通工具:团队协作

2.3 OceanBase DBA检查清单设计

OceanBase DBA应设计以下检查清单:

# OceanBase DBA检查清单

## 每日检查清单
– [ ] 监控告警检查
– [ ] 集群状态检查
– [ ] 存储使用情况检查
– [ ] 备份状态检查
– [ ] 性能指标检查
– [ ] 慢SQL检查
– [ ] 会话状态检查
– [ ] 日志文件检查

## 每周检查清单
– [ ] 完整备份验证
– [ ] 性能报告分析
– [ ] 容量规划评估
– [ ] 安全补丁检查
– [ ] 系统参数调优
– [ ] 索引使用情况检查
– [ ] 表空间使用情况检查

## 每月检查清单
– [ ] 数据库版本检查
– [ ] 全库备份恢复演练
– [ ] 安全审计
– [ ] 灾备切换演练,学习交流加群风哥QQ113257174。
– [ ] 性能基准测试
– [ ] 文档更新

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

3.1 OceanBase DBA早间例行检查

3.1.1 OceanBase集群状态检查

# 检查集群状态
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.__all_server;”

+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+
| svr_ip | svr_port | zone | start_service_time | stop_service_time | status | block_migrate | build_version | last_offline_time | last_heartbeat | with_rootserver | version | data_version | svr_type | observer_version |
+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+
| 192.168.1.10 | 2882 | zone1 | 2026-04-01 00:00:00 | NULL | ACTIVE | false | 4.3.0.0 | NULL | 2026-04-09 09:00 | true | 4.3.0.0 | 4.3.0.0-20260301120000 | observer | 4.3.0.0 |
| 192.168.1.11 | 2882 | zone2 | 2026-04-01 00:00:00 | NULL | ACTIVE | false | 4.3.0.0 | NULL | 2026-04-09 09:00 | false | 4.3.0.0 | 4.3.0.0-20260301120000 | observer | 4.3.0.0 |
| 192.168.1.12 | 2882 | zone3 | 2026-04-01 00:00:00 | NULL | ACTIVE | false | 4.3.0.0 | NULL | 2026-04-09 09:00 | false | 4.3.0.0 | 4.3.0.0-20260301120000 | observer | 4.3.0.0 |
+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+

# 检查租户状态
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.__all_tenant;”

+—————————-+————-+————-+————-+————+———————+———————+——————+————+——————+—————+—————+
| tenant_id | tenant_name | tenant_type | primary_zone | locality | create_time | modify_time | status | lock_status | compatibility_mode | replica_num | log_mode |
+—————————-+————-+————-+————-+————+———————+———————+——————+————+——————+—————+—————+
| 1 | sys | SYS | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | 2026-04-01 00:00:00 | 2026-04-01 00:00:00 | NORMAL | NONE | MYSQL | 3 | ARCHIVELOG |
| 1001 | fgedudb | USER | zone1;zone2;zone3 | FULL{1}@zone1, FULL{1}@zone2, FULL{1}@zone3 | 2026-04-01 00:00:00 | 2026-04-01 00:00:00 | NORMAL | NONE | MYSQL | 3 | ARCHIVELOG |
+—————————-+————-+————-+————-+————+———————+———————+——————+————+——————+—————+—————+

3.1.2 OceanBase存储使用情况检查

# 检查存储使用情况
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.__all_virtual_disk_stat;”

+———-+———-+——————+——————+——————+——————+——————+——————+——————+——————+
| svr_ip | svr_port | device_name | total_size | used_size | avail_size | usage_percent | read_count | write_count | io_error_count |
+———-+———-+——————+——————+——————+——————+——————+——————+——————+——————+,更多视频教程www.fgedu.net.cn。
| 192.168.1.10 | 2882 | /ob/fgdata | 107374182400 | 21474836480 | 85899345920 | 20.00 | 1000 | 500 | 0 |
| 192.168.1.11 | 2882 | /ob/fgdata | 107374182400 | 16106127360 | 91268055040 | 15.00 | 900 | 450 | 0 |
| 192.168.1.12 | 2882 | /ob/fgdata | 107374182400 | 10737418240 | 96636764160 | 10.00 | 800 | 400 | 0 |
+———-+———-+——————+——————+——————+——————+——————+——————+——————+——————+

3.1.3 OceanBase备份状态检查

# 检查备份状态
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM oceanbase.CDB_OB_BACKUP_JOB_HISTORY ORDER BY job_id DESC LIMIT 10;”

+——–+————-+———+———-+———————+———————+———————+———+———–+——————+————-+
| job_id | tenant_name | job_type | job_level | start_time | end_time | status | result | progress | result_code | comment |
+——–+————-+———+———-+———————+———————+———————+———+———–+——————+————-+
| 10001 | fgedudb | BACKUP | FULL | 2026-04-08 20:00:00 | 2026-04-08 20:30:00 | SUCCESS | NULL | 100.00 | 0 | Backup success |
| 10000 | fgedudb | BACKUP | INCREMENTAL | 2026-04-07 20:00:00 | 2026-04-07 20:15:00 | SUCCESS | NULL | 100.00 | 0 | Backup success |
+——–+————-+———+———-+———————+———————+———————+———+———–+——————+————-+

3.2 OceanBase DBA日常维护操作

3.2.1 OceanBase统计信息收集

# 收集表统计信息
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ANALYZE TABLE fgedu.t1;”

Query OK, 0 rows affected (0.10 sec)

# 收集数据库统计信息
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ANALYZE DATABASE fgedudb;”

Query OK, 0 rows affected (1.20 sec)

3.2.2 OceanBase慢SQL分析

# 查看慢SQL
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM oceanbase.V$OB_SLOW_QUERY ORDER BY query_time DESC LIMIT 10;”

+—————————-+———————+———————+———-+——————+——————+——————+——————+——————+——————+,更多学习教程公众号风哥教程itpux_com。
| sql_id | start_time | end_time | user_name | database_name | query_time | lock_wait_time | return_rows | affected_rows | sql_text |
+—————————-+———————+———————+———-+——————+——————+——————+——————+——————+——————+
| 1234567890abcdef | 2026-04-09 08:30:00 | 2026-04-09 08:30:10 | fgedu | fgedudb | 10.00 | 0.00 | 100000 | 0 | SELECT * FROM t1 WHERE id > 100000 |
+—————————-+———————+———————+———-+——————+——————+——————+——————+——————+——————+

3.2.3 OceanBase参数调整

# 查看当前参数
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SHOW PARAMETERS LIKE ‘memory_limit’;”

+——-+———-+—————-+———-+——————+———–+——-+——————-+———-+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section |
+——-+———-+—————-+———-+——————+———–+——-+——————-+———-+
| zone1 | observer | 192.168.1.10 | 2882 | memory_limit | capacity | 16G | Memory limit for observer | OBSERVER |
| zone2 | observer | 192.168.1.11 | 2882 | memory_limit | capacity | 16G | Memory limit for observer | OBSERVER |
| zone3 | observer | 192.168.1.12 | 2882 | memory_limit | capacity | 16G | Memory limit for observer | OBSERVER |
+——-+———-+—————-+———-+——————+———–+——-+——————-+———-+

# 修改参数
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET memory_limit = ’24G’ ZONE ‘zone1’;”

Query OK, 0 rows affected (0.05 sec)

3.3 OceanBase DBA事件响应与处理

3.3.1 OceanBase故障响应流程

# 故障响应流程,from DB视频:www.itpux.com。
1. 接收告警
2. 初步分析
3. 确认故障
4. 制定方案
5. 执行修复
6. 验证修复
7. 记录总结

# 示例:处理节点故障

## 1. 接收告警
– 告警:节点192.168.1.11状态异常

## 2. 初步分析
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.__all_server WHERE svr_ip = ‘192.168.1.11’;”

+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+
| svr_ip | svr_port | zone | start_service_time | stop_service_time | status | block_migrate | build_version | last_offline_time | last_heartbeat | with_rootserver | version | data_version | svr_type | observer_version |
+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+
| 192.168.1.11 | 2882 | zone2 | 2026-04-01 00:00:00 | NULL | INACTIVE | false | 4.3.0.0 | 2026-04-09 09:30:00 | 2026-04-09 09:25 | false | 4.3.0.0 | 4.3.0.0-20260301120000 | observer | 4.3.0.0 |
+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+

## 3. 确认故障
– 节点192.168.1.11已离线
– 检查服务器状态

## 4. 制定方案
– 重启observer进程

## 5. 执行修复
$ ssh root@192.168.1.11
# cd /ob/app/oceanbase/bin
# ./observer restart

## 6. 验证修复
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.__all_server WHERE svr_ip = ‘192.168.1.11’;”

+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+
| svr_ip | svr_port | zone | start_service_time | stop_service_time | status | block_migrate | build_version | last_offline_time | last_heartbeat | with_rootserver | version | data_version | svr_type | observer_version |
+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+
| 192.168.1.11 | 2882 | zone2 | 2026-04-09 09:40:00 | NULL | ACTIVE | false | 4.3.0.0 | 2026-04-09 09:30:00 | 2026-04-09 09:41 | false | 4.3.0.0 | 4.3.0.0-20260301120000 | observer | 4.3.0.0 |
+—————-+———-+————+———————+———————+———-+—————–+———-+————————+——————+——————+——–+—————————-+———-+——————-+

## 7. 记录总结
– 故障原因:服务器内存不足导致进程崩溃
– 解决方案:重启observer进程,调整内存参数
– 预防措施:增加服务器内存,优化内存配置

Part04-生产案例与实战讲解

4.1 OceanBase DBA早间检查实战案例

# 早间检查脚本示例
#!/bin/bash
# morning_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

echo “=== OceanBase DBA早间检查开始 ===”
echo “检查时间: $(date)”

echo “\n1. 检查集群状态”
obclient -h192.168.1.10 -P2881 -uroot@sys -p”password” -e “SELECT svr_ip, svr_port, zone, status FROM oceanbase.__all_server;”

echo “\n2. 检查租户状态”
obclient -h192.168.1.10 -P2881 -uroot@sys -p”password” -e “SELECT tenant_id, tenant_name, status FROM oceanbase.__all_tenant;”

echo “\n3. 检查存储使用情况”
obclient -h192.168.1.10 -P2881 -uroot@sys -p”password” -e “SELECT svr_ip, device_name, total_size/1024/1024/1024 as total_gb, used_size/1024/1024/1024 as used_gb, usage_percent FROM oceanbase.__all_virtual_disk_stat;”

echo “\n4. 检查备份状态”
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “SELECT job_id, tenant_name, job_type, status, start_time, end_time FROM oceanbase.CDB_OB_BACKUP_JOB_HISTORY ORDER BY job_id DESC LIMIT 5;”

echo “\n5. 检查慢SQL”
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “SELECT sql_id, start_time, query_time, user_name, sql_text FROM oceanbase.V$OB_SLOW_QUERY ORDER BY query_time DESC LIMIT 5;”

echo “\n=== OceanBase DBA早间检查结束 ===”

4.2 OceanBase DBA日常维护实战案例

# 日常维护脚本示例
#!/bin/bash
# daily_maintenance.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`

echo “=== OceanBase DBA日常维护开始 ===”
echo “维护时间: $(date)”

echo “\n1. 收集统计信息”
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “ANALYZE DATABASE fgedudb;”

echo “\n2. 检查表空间使用情况”
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “SELECT table_name, table_schema, data_length/1024/1024 as data_mb, index_length/1024/1024 as index_mb, (data_length + index_length)/1024/1024 as total_mb FROM information_schema.tables WHERE table_schema = ‘fgedudb’ ORDER BY total_mb DESC LIMIT 10;”

echo “\n3. 检查会话状态”
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “SELECT user, host, db, command, time, state FROM information_schema.processlist WHERE time > 60 ORDER BY time DESC;”

echo “\n4. 清理过期备份”
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “DELETE FROM oceanbase.CDB_OB_BACKUP_PIECE WHERE end_time < DATE_SUB(NOW(), INTERVAL 30 DAY);" echo "\n=== OceanBase DBA日常维护结束 ==="

4.3 OceanBase DBA事件处理实战案例

# 事件处理案例:表空间满

## 问题现象
– 告警:表空间fgedutbs使用量达到90%

## 分析步骤
1. 检查表空间使用情况
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “SELECT tablespace_name, sum(bytes)/1024/1024/1024 as total_gb, sum(maxbytes)/1024/1024/1024 as max_gb, sum(bytes)/sum(maxbytes)*100 as usage_percent FROM dba_data_files GROUP BY tablespace_name;”

+—————+———-+———+—————+
| tablespace_name | total_gb | max_gb | usage_percent |
+—————+———-+———+—————+
| fgedutbs | 100.00 | 100.00 | 90.00 |
+—————+———-+———+—————+

2. 检查占用空间最大的表
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “SELECT table_name, table_schema, data_length/1024/1024/1024 as data_gb, index_length/1024/1024/1024 as index_gb, (data_length + index_length)/1024/1024/1024 as total_gb FROM information_schema.tables WHERE table_schema = ‘fgedudb’ ORDER BY total_gb DESC LIMIT 5;”

+————+————–+———+———-+———-+
| table_name | table_schema | data_gb | index_gb | total_gb |
+————+————–+———+———-+———-+
| t1 | fgedudb | 80.00 | 10.00 | 90.00 |
+————+————–+———+———-+———-+

## 解决方案
1. 扩展表空间
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “ALTER TABLESPACE fgedutbs ADD DATAFILE ‘/ob/fgdata/fgedutbs02.dbf’ SIZE 100G;”

Query OK, 0 rows affected (0.50 sec)

2. 验证表空间扩展
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “SELECT tablespace_name, sum(bytes)/1024/1024/1024 as total_gb, sum(maxbytes)/1024/1024/1024 as max_gb, sum(bytes)/sum(maxbytes)*100 as usage_percent FROM dba_data_files GROUP BY tablespace_name;”

+—————+———-+———+—————+
| tablespace_name | total_gb | max_gb | usage_percent |
+—————+———-+———+—————+
| fgedutbs | 100.00 | 200.00 | 45.00 |
+—————+———-+———+—————+

## 预防措施
– 设置表空间自动扩展
– 定期监控表空间使用情况
– 制定数据清理策略

Part05-风哥经验总结与分享

5.1 OceanBase DBA日常工作最佳实践

OceanBase DBA日常工作的最佳实践包括:

  • 自动化运维:编写自动化脚本,减少手动操作,提高工作效率
  • 标准化操作:制定标准化的操作流程,确保操作的一致性和安全性
  • 预防性维护:定期进行预防性维护,减少故障发生
  • 监控告警:建立完善的监控告警体系,及时发现和处理问题
  • 文档化:详细记录所有操作和变更,便于问题追溯和知识传承
  • 持续学习:不断学习OceanBase的新特性和最佳实践
  • 团队协作:与开发、运维等团队保持良好的沟通和协作

5.2 OceanBase DBA工作效率提升技巧

OceanBase DBA工作效率提升技巧:

  • 使用脚本自动化:编写脚本自动化日常检查和维护任务
  • 使用工具提高效率:熟练使用OCP、ODC等工具
  • 建立模板和规范:建立标准化的模板和规范,减少重复工作
  • 合理安排时间:根据任务的优先级和紧急程度合理安排时间
  • 批量操作:对相似的任务进行批量操作,提高效率
  • 知识管理:建立知识库,积累和分享经验

5.3 OceanBase DBA职业发展建议

OceanBase DBA的职业发展建议:

  • 技术深度:深入理解OceanBase的架构和原理,成为技术专家
  • 技术广度:了解相关技术,如分布式系统、云平台等
  • 管理能力:提高团队管理和项目管理能力
  • 业务理解:深入理解业务需求,提供更好的数据库解决方案
  • 认证和培训:获取OceanBase相关认证,参加培训和技术交流
  • 社区参与:积极参与OceanBase社区,分享经验和知识
风哥提示:OceanBase DBA的日常工作需要细心、耐心和专业知识。建立良好的工作习惯和流程,不断学习和优化,才能成为一名优秀的OceanBase DBA。学习交流加群风哥微信: itpux-com

持续改进:OceanBase DBA的工作是一个持续改进的过程,需要不断学习新技术、优化工作流程、提高工作效率。建议定期review自己的工作,总结经验教训,不断提升自己的专业能力。更多学习教程公众号风哥教程itpux_com

风哥提示:数据库运维是一个需要责任心和专业技能的工作,OceanBase作为分布式数据库,其运维复杂度更高,需要DBA具备更全面的知识和技能。from OceanBase视频:www.itpux.com

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

联系我们

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

微信号:itpux-com

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