OceanBase教程FG107-OceanBase DBA备份与恢复实战
本文档风哥主要介绍OceanBase DBA的备份与恢复实战,包括备份与恢复的概念与意义、备份类型与特点、恢复方法与原理、备份策略制定、备份存储规划、备份监控与验证、备份实施、恢复实施、灾备方案实施、实战案例等内容,风哥教程参考OceanBase官方文档备份与恢复指南、系统管理员手册等内容编写,适合DBA人员在学习和工作中使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 OceanBase备份与恢复的概念与意义
OceanBase备份是指将OceanBase数据库的数据和日志复制到安全的存储介质中,以便在数据丢失或损坏时进行恢复。恢复是指将备份的数据和日志重新加载到数据库中,使数据库恢复到备份时的状态。备份与恢复的意义包括:
- 数据安全:防止数据丢失或损坏,保障数据安全
- 业务连续性:在发生故障时,快速恢复业务运行
- 合规要求:满足企业内部和外部的合规要求
- 灾难恢复:在发生灾难时,恢复数据库系统
- 数据迁移:支持数据库迁移和升级
1.2 OceanBase备份类型与特点
OceanBase的备份类型包括:
- 物理备份:
- 全量备份:备份整个数据库的所有数据
- 增量备份:备份自上次备份以来更改的数据
- 差异备份:备份自上次全量备份以来更改的数据
- 逻辑备份:
- SQL导出:导出为SQL语句
- 数据导出:导出为数据文件
OceanBase备份的特点:
- 分布式备份:支持分布式环境下的备份
- 在线备份:支持在线备份,不影响业务运行
- 增量备份:支持增量备份,减少备份时间和空间
- 备份验证:支持备份验证,确保备份的完整性
- 备份压缩:支持备份压缩,减少存储空间
1.3 OceanBase恢复方法与原理
OceanBase的恢复方法包括:
- 完全恢复:恢复到备份时的状态
- 时间点恢复:恢复到指定的时间点
- 表级恢复:恢复指定的表
- 租户级恢复:恢复指定的租户
OceanBase恢复的原理:
- 物理恢复:将备份的物理文件复制回数据库,然后应用重做日志
- 逻辑恢复:执行导出的SQL语句或加载数据文件
- 增量恢复:先恢复全量备份,然后应用增量备份和重做日志
Part02-生产环境规划与建议
2.1 OceanBase备份策略制定
OceanBase备份策略的制定方法:
,风哥提示:。
## 1. 备份频率
– 全量备份:每周一次
– 增量备份:每天一次
– 日志备份:每小时一次
## 2. 备份时间
– 全量备份:周末凌晨2:00
– 增量备份:每天凌晨1:00
– 日志备份:每小时整点
## 3. 备份类型
– 生产环境:物理备份为主,逻辑备份为辅
– 测试环境:逻辑备份为主
## 4. 备份保留期
– 全量备份:保留4周
– 增量备份:保留1周
– 日志备份:保留72小时
## 5. 备份验证
– 全量备份:每周验证一次
– 增量备份:每两周验证一次
– 恢复演练:每月一次
## 6. 备份监控
– 备份状态监控
– 备份成功率监控,学习交流加群风哥微信: itpux-com。
– 备份时间监控
– 备份空间监控
## 7. 应急备份
– 重大操作前:执行手动备份
– 系统升级前:执行手动备份
– 数据迁移前:执行手动备份
2.2 OceanBase备份存储规划
OceanBase备份存储的规划方法:
## 1. 存储介质
– 本地磁盘:用于临时备份
– NAS:用于短期备份
– 对象存储:用于长期备份
– 磁带库:用于归档备份
## 2. 存储容量
– 全量备份:数据量的1.5倍
– 增量备份:数据量的0.5倍
– 日志备份:数据量的0.3倍
## 3. 存储策略
– 本地存储:保留最近的备份
– 远程存储:保留历史备份
– 异地存储:用于灾备
## 4. 存储安全
– 访问控制:限制备份存储的访问权限
– 加密:对备份数据进行加密
– 冗余:采用RAID等冗余技术
– 备份:对备份存储本身进行备份
## 5. 存储监控
– 存储空间监控
– 存储性能监控,学习交流加群风哥QQ113257174。
– 存储故障监控
## 6. 存储管理
– 定期清理过期备份
– 监控存储使用情况
– 规划存储扩容
2.3 OceanBase备份监控与验证
OceanBase备份监控与验证的方法:
- 备份监控:
- 监控备份状态:成功/失败
- 监控备份时间:是否在预期时间内完成
- 监控备份大小:是否与预期一致
- 监控备份存储:空间使用情况
- 备份验证:
- 完整性验证:检查备份文件是否完整
- 可恢复性验证:尝试恢复备份
- 数据一致性验证:检查恢复后的数据是否一致
- 恢复演练:
- 定期进行恢复演练
- 记录恢复时间和过程
- 分析恢复演练结果,改进备份策略
Part03-生产环境项目实施方案
3.1 OceanBase备份实施
3.1.1 OceanBase物理备份
## 1. 配置备份存储
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET backup_dest = ‘s3://backup-bucket/fgedudb’;”
## 2. 执行全量备份
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ALTER SYSTEM BACKUP TENANT fgedudb FULL;”
## 3. 查看备份状态
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -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;”
+——–+————-+———+———-+———————+———————+———————+
| job_id | tenant_name | job_type | status | start_time | end_time | comment |
+——–+————-+———+———-+———————+———————+———————+
| 10001 | fgedudb | BACKUP | SUCCESS | 2026-04-08 20:00:00 | 2026-04-08 20:30:00 | Backup success |
+——–+————-+———+———-+———————+———————+———————+
## 4. 执行增量备份
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ALTER SYSTEM BACKUP TENANT fgedudb INCREMENTAL;”
## 5. 查看增量备份状态
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -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;”
+——–+————-+———+———-+———————+———————+———————+
| job_id | tenant_name | job_type | status | start_time | end_time | comment |
+——–+————-+———+———-+———————+———————+———————+
| 10002 | fgedudb | BACKUP | SUCCESS | 2026-04-09 01:00:00 | 2026-04-09 01:15:00 | Backup success |
+——–+————-+———+———-+———————+———————+———————+
## 6. 备份验证
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ALTER SYSTEM VALIDATE BACKUP TENANT fgedudb BACKUP_SET_ID 10001;”
3.1.2 OceanBase逻辑备份
## 1. 使用obdump工具导出数据
$ obdump –host=192.168.1.10 –port=2881 –user=root@fgedudb –password=password –database=fgedudb –table=t1 –output-dir=/ob/backup/logical
## 2. 查看导出结果
$ ls -la /ob/backup/logical/,更多学习教程公众号风哥教程itpux_com。
## 3. 使用obloader工具导入数据
$ obloader –host=192.168.1.10 –port=2881 –user=root@fgedudb –password=password –database=fgedudb –input-dir=/ob/backup/logical
## 4. 验证导入结果
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu.t1 LIMIT 10;”
3.2 OceanBase恢复实施
3.2.1 OceanBase物理恢复
## 1. 查看备份信息
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM oceanbase.CDB_OB_BACKUP_SET WHERE tenant_name = ‘fgedudb’ ORDER BY backup_set_id DESC LIMIT 5;”
## 2. 执行完全恢复
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ALTER SYSTEM RESTORE TENANT fgedudb FROM ‘s3://backup-bucket/fgedudb’ BACKUP_SET_ID 10001;”
## 3. 执行时间点恢复
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ALTER SYSTEM RESTORE TENANT fgedudb FROM ‘s3://backup-bucket/fgedudb’ UNTIL TIME ‘2026-04-08 19:00:00’;”
## 4. 查看恢复状态
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM oceanbase.CDB_OB_RESTORE_HISTORY ORDER BY restore_id DESC LIMIT 5;”
## 5. 验证恢复结果
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu.t1 LIMIT 10;”
## 6. 验证业务运行,from DB视频:www.itpux.com。
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “INSERT INTO fgedu.t1 VALUES (101, ‘test101’);”
3.2.2 OceanBase逻辑恢复
## 1. 使用obloader工具导入数据
$ obloader –host=192.168.1.10 –port=2881 –user=root@fgedudb –password=password –database=fgedudb –input-dir=/ob/backup/logical
## 2. 验证导入结果
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT COUNT(*) FROM fgedu.t1;”
## 3. 验证数据一致性
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu.t1 WHERE id = 1;”
3.3 OceanBase灾备方案实施
3.3.1 OceanBase异地灾备
## 1. 配置灾备集群
– 在异地部署OceanBase集群
– 配置网络连接
– 确保网络带宽足够
## 2. 配置数据同步
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM ADD REPLICA TENANT fgedudb ZONE ‘zone4,zone5,zone6’;”
## 3. 配置同步策略
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET replication_type = ‘ASYNC’ TENANT ‘fgedudb’;”
## 4. 监控同步状态
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT * FROM oceanbase.__all_virtual_replication_status WHERE tenant_id = 1001;”
## 5. 灾备切换演练
– 停止主集群
– 启动灾备集群
– 验证业务运行
– 切回主集群
## 6. 灾备验证
– 定期验证灾备数据的一致性
– 定期进行灾备切换演练
– 监控灾备集群的状态
Part04-生产案例与实战讲解
4.1 OceanBase物理备份实战案例
## 案例背景
– 生产环境:3节点OceanBase集群
– 数据量:500GB
– 备份策略:每周全量备份,每天增量备份
## 实施步骤
### 1. 配置备份存储
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “ALTER SYSTEM SET backup_dest = ‘s3://backup-bucket/fgedudb’;”
### 2. 执行全量备份
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ALTER SYSTEM BACKUP TENANT fgedudb FULL;”
### 3. 监控备份进度
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM oceanbase.CDB_OB_BACKUP_JOB WHERE status = ‘RUNNING’;”
### 4. 验证备份结果
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -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;”
+——–+————-+———+———-+———————+———————+———————+
| job_id | tenant_name | job_type | status | start_time | end_time | comment |
+——–+————-+———+———-+———————+———————+———————+
| 10001 | fgedudb | BACKUP | SUCCESS | 2026-04-08 20:00:00 | 2026-04-08 20:30:00 | Backup success |
+——–+————-+———+———-+———————+———————+———————+
### 5. 执行增量备份
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ALTER SYSTEM BACKUP TENANT fgedudb INCREMENTAL;”
### 6. 验证增量备份结果
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -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;”
+——–+————-+———+———-+———————+———————+———————+
| job_id | tenant_name | job_type | status | start_time | end_time | comment |
+——–+————-+———+———-+———————+———————+———————+
| 10002 | fgedudb | BACKUP | SUCCESS | 2026-04-09 01:00:00 | 2026-04-09 01:15:00 | Backup success |
+——–+————-+———+———-+———————+———————+———————+
### 7. 备份验证
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “ALTER SYSTEM VALIDATE BACKUP TENANT fgedudb BACKUP_SET_ID 10001;”
## 案例总结
– 成功配置了备份存储
– 执行了全量备份和增量备份
– 验证了备份的完整性
– 建立了定期备份的机制
4.2 OceanBase逻辑备份实战案例
## 案例背景
– 测试环境:1节点OceanBase实例
– 数据量:50GB
– 需求:导出指定表的数据,用于数据迁移
## 实施步骤
### 1. 导出表数据
$ obdump –host=192.168.1.10 –port=2881 –user=root@fgedudb –password=password –database=fgedudb –table=t1 –output-dir=/ob/backup/logical
### 2. 查看导出文件
$ ls -la /ob/backup/logical/
### 3. 导入数据到新环境
$ obloader –host=192.168.1.20 –port=2881 –user=root@fgedudb –password=password –database=fgedudb –input-dir=/ob/backup/logical
### 4. 验证导入结果
$ obclient -h192.168.1.20 -P2881 -uroot@fgedudb -p -e “SELECT COUNT(*) FROM fgedu.t1;”
### 5. 验证数据一致性
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT COUNT(*) FROM fgedu.t1;”
$ obclient -h192.168.1.20 -P2881 -uroot@fgedudb -p -e “SELECT COUNT(*) FROM fgedu.t1;”
## 案例总结
– 成功导出了指定表的数据
– 成功导入到新环境
– 验证了数据的一致性
– 实现了数据迁移的目标
4.3 OceanBase灾备切换实战案例
## 案例背景
– 主集群:3节点OceanBase集群,位于北京
– 灾备集群:3节点OceanBase集群,位于上海
– 数据同步:异步复制
## 实施步骤
### 1. 监控主集群状态
$ obclient -h192.168.1.10 -P2881 -uroot@sys -p -e “SELECT svr_ip, svr_port, zone, status FROM oceanbase.__all_server;”
### 2. 模拟主集群故障
– 停止主集群的observer进程
### 3. 检查灾备集群状态
$ obclient -h192.168.2.10 -P2881 -uroot@sys -p -e “SELECT svr_ip, svr_port, zone, status FROM oceanbase.__all_server;”
### 4. 启动灾备集群的业务
– 修改应用连接配置,指向灾备集群
– 启动应用服务
### 5. 验证业务运行
$ obclient -h192.168.2.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu.t1 LIMIT 10;”
$ obclient -h192.168.2.10 -P2881 -uroot@fgedudb -p -e “INSERT INTO fgedu.t1 VALUES (101, ‘test101’);”
### 6. 主集群恢复后,切回主集群
– 恢复主集群
– 同步灾备数据到主集群
– 修改应用连接配置,指向主集群
– 启动应用服务
### 7. 验证主集群业务运行
$ obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p -e “SELECT * FROM fgedu.t1 LIMIT 10;”
## 案例总结
– 成功执行了灾备切换
– 业务在灾备集群正常运行
– 成功切回主集群
– 验证了灾备方案的有效性
Part05-风哥经验总结与分享
5.1 OceanBase备份与恢复最佳实践
OceanBase备份与恢复的最佳实践:
- 制定合理的备份策略:根据业务需求和数据重要性,制定合理的备份策略
- 选择合适的备份类型:根据场景选择物理备份或逻辑备份
- 使用增量备份:减少备份时间和空间
- 备份验证:定期验证备份的完整性和可恢复性
- 异地备份:建立异地备份,提高数据安全性
- 恢复演练:定期进行恢复演练,确保备份可恢复
- 监控备份状态:实时监控备份状态,及时发现问题
- 备份自动化:实现备份的自动化,减少人工操作
5.2 OceanBase备份与恢复技巧
OceanBase备份与恢复的技巧:
- 备份存储选择:选择可靠的存储介质,如对象存储
- 备份压缩:启用备份压缩,减少存储空间
- 备份并行:使用并行备份,提高备份速度
- 备份时间选择:选择业务低峰期进行备份
- 备份保留期:根据业务需求设置合理的备份保留期
- 恢复测试:定期测试恢复过程,确保备份可恢复
- 备份监控:设置备份监控,及时发现备份失败
- 备份文档:建立备份文档,记录备份策略和过程
5.3 OceanBase备份自动化方案
OceanBase备份自动化的方案:
## 1. 自动化脚本
– 编写备份脚本,包括全量备份、增量备份、备份验证
– 脚本示例:
#!/bin/bash
# backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 全量备份
function full_backup() {
echo “开始全量备份…”
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “ALTER SYSTEM BACKUP TENANT fgedudb FULL;”
echo “全量备份完成”
}
# 增量备份
function incr_backup() {
echo “开始增量备份…”
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “ALTER SYSTEM BACKUP TENANT fgedudb INCREMENTAL;”
echo “增量备份完成”
}
# 备份验证
function validate_backup() {
echo “开始备份验证…”
backup_set_id=$(obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “SELECT MAX(backup_set_id) FROM oceanbase.CDB_OB_BACKUP_SET WHERE tenant_name = ‘fgedudb’;” | tail -n 1)
obclient -h192.168.1.10 -P2881 -uroot@fgedudb -p”password” -e “ALTER SYSTEM VALIDATE BACKUP TENANT fgedudb BACKUP_SET_ID $backup_set_id;”
echo “备份验证完成”
}
# 主函数
case $1 in
full)
full_backup
;;
incr)
incr_backup
;;
validate)
validate_backup
;;
*)
echo “Usage: $0 {full|incr|validate}”
;;
esac
## 2. 定时任务
– 使用crontab设置定时任务:
# 全量备份(每周日凌晨2:00)
0 2 * * 0 /ob/app/scripts/backup.sh full >> /ob/app/logs/backup.log 2>&1
# 增量备份(每天凌晨1:00)
0 1 * * * /ob/app/scripts/backup.sh incr >> /ob/app/logs/backup.log 2>&1
# 备份验证(每周一凌晨3:00)
0 3 * * 1 /ob/app/scripts/backup.sh validate >> /ob/app/logs/backup.log 2>&1
## 3. 监控告警
– 监控备份状态,设置告警
– 监控备份存储空间,设置告警
– 监控备份执行时间,设置告警
## 4. 日志管理
– 记录备份日志
– 定期清理备份日志
– 分析备份日志,发现问题
## 5. 报告生成
– 定期生成备份报告
– 报告内容包括备份状态、备份大小、备份时间等
– 发送备份报告给相关人员
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
