Skip to content

OceanBase 增量与全量备份

全量备份的配置与执行

1. 全量备份配置

备份策略配置

sql
-- 创建备份策略
CREATE BACKUP STRATEGY tenant_backup_strategy
  TENANT = 'tenant1'
  TYPE = FULL
  INTERVAL = '1 WEEK'
  RETENTION = '30 DAYS'
  DESTINATION = 'oss://backup-bucket/full';

备份存储配置

sql
-- 配置备份存储位置
ALTER SYSTEM SET backup_dest = 'oss://backup-bucket';
ALTER SYSTEM SET backup_dest_access_key = 'your_access_key';
ALTER SYSTEM SET backup_dest_secret_key = 'your_secret_key';
ALTER SYSTEM SET backup_dest_security_token = 'your_security_token';

2. 执行全量备份

手动执行全量备份

sql
-- 对指定租户执行全量备份
BACKUP TENANT tenant1 FULL TO 'oss://backup-bucket/full/20240118' WITH BACKUPSET 'backup_set_20240118';

-- 查看备份任务状态
SELECT * FROM oceanbase.DBA_OB_BACKUP_TASKS WHERE task_type = 'FULL' ORDER BY start_time DESC;

自动执行全量备份

  • 通过OCP配置定期全量备份任务
  • 使用cron作业调度备份脚本
  • 利用备份策略自动执行

3. 全量备份验证

sql
-- 验证备份集完整性
SELECT * FROM oceanbase.DBA_OB_BACKUP_VALIDATION WHERE backup_set_id = 'backup_set_20240118';

-- 检查备份集信息
SELECT * FROM oceanbase.DBA_OB_BACKUP_SET_DETAILS WHERE backup_set_id = 'backup_set_20240118';

增量备份的配置与执行

1. 增量备份配置

增量备份策略

sql
-- 创建增量备份策略
CREATE BACKUP STRATEGY tenant_incremental_strategy
  TENANT = 'tenant1'
  TYPE = INCREMENTAL
  INTERVAL = '1 DAY'
  RETENTION = '7 DAYS'
  BASE_BACKUP_TYPE = FULL
  DESTINATION = 'oss://backup-bucket/incremental';

增量备份参数配置

sql
-- 配置增量备份相关参数
ALTER SYSTEM SET incremental_backup_switch_interval = 3600;
ALTER SYSTEM SET incremental_backup_buffer_size = 1073741824;

2. 执行增量备份

手动执行增量备份

sql
-- 基于上次全量备份执行增量备份
BACKUP TENANT tenant1 INCREMENTAL TO 'oss://backup-bucket/incremental/20240119' 
  WITH BACKUPSET 'incremental_set_20240119' 
  BASE_BACKUPSET = 'backup_set_20240118';

-- 查看增量备份任务状态
SELECT * FROM oceanbase.DBA_OB_BACKUP_TASKS WHERE task_type = 'INCREMENTAL' ORDER BY start_time DESC;

自动执行增量备份

  • 通过OCP配置定期增量备份任务
  • 基于全量备份策略自动触发
  • 使用备份策略管理工具

3. 增量备份验证

sql
-- 验证增量备份集完整性
SELECT * FROM oceanbase.DBA_OB_BACKUP_VALIDATION WHERE backup_set_id = 'incremental_set_20240119';

-- 检查增量备份依赖关系
SELECT * FROM oceanbase.DBA_OB_BACKUP_SET_DEPENDENCIES WHERE backup_set_id = 'incremental_set_20240119';

备份策略设计

1. 备份频率设计

全量备份频率

  • 业务系统:每周1次全量备份
  • 核心业务:每3-5天1次全量备份
  • 数据量小的系统:每天1次全量备份

增量备份频率

  • 核心业务:每4-6小时1次增量备份
  • 一般业务:每天1-2次增量备份
  • 日志备份:实时或每小时1次

2. 备份存储设计

存储位置

  • 本地存储:用于快速恢复
  • 远程存储:用于灾难恢复
  • 云存储:如OSS、S3等,用于长期归档

存储策略

  • 采用3-2-1备份策略:3份备份,2种不同介质,1份异地存储
  • 定期验证备份完整性
  • 实现备份加密

3. 备份窗口设计

选择合适的备份时间

  • 业务低峰期执行备份
  • 避免在系统维护窗口执行
  • 考虑备份执行时间和资源消耗

并行备份优化

sql
-- 调整备份并行度
ALTER SYSTEM SET backup_concurrency = 4;
ALTER SYSTEM SET backup_io_thread_count = 8;

备份恢复流程

1. 全量备份恢复

恢复全量备份

sql
-- 停止租户服务
ALTER TENANT tenant1 STOP SERVICE;

-- 恢复全量备份
RESTORE TENANT tenant1 FROM 'oss://backup-bucket/full/20240118' 
  WITH BACKUPSET 'backup_set_20240118';

-- 启动租户服务
ALTER TENANT tenant1 START SERVICE;

2. 增量备份恢复

恢复全量+增量备份

sql
-- 停止租户服务
ALTER TENANT tenant1 STOP SERVICE;

-- 先恢复全量备份
RESTORE TENANT tenant1 FROM 'oss://backup-bucket/full/20240118' 
  WITH BACKUPSET 'backup_set_20240118';

-- 再恢复增量备份
RESTORE TENANT tenant1 INCREMENTAL FROM 'oss://backup-bucket/incremental/20240119' 
  WITH BACKUPSET 'incremental_set_20240119';

-- 启动租户服务
ALTER TENANT tenant1 START SERVICE;

3. 点-in-time恢复(PITR)

sql
-- 停止租户服务
ALTER TENANT tenant1 STOP SERVICE;

-- 恢复全量备份
RESTORE TENANT tenant1 FROM 'oss://backup-bucket/full/20240118' 
  WITH BACKUPSET 'backup_set_20240118';

-- 恢复增量备份
RESTORE TENANT tenant1 INCREMENTAL FROM 'oss://backup-bucket/incremental/20240119' 
  WITH BACKUPSET 'incremental_set_20240119';

-- 应用日志到指定时间点
RECOVER TENANT tenant1 UNTIL TIME '2024-01-19 10:30:00';

-- 启动租户服务
ALTER TENANT tenant1 START SERVICE;

备份优化最佳实践

1. 备份性能优化

调整备份参数

sql
-- 优化备份I/O性能
ALTER SYSTEM SET backup_io_limit = 0; -- 取消I/O限制
ALTER SYSTEM SET backup_write_buffer_size = 67108864;

-- 优化备份CPU使用
ALTER SYSTEM SET backup_cpu_quota = 20; -- 限制备份CPU使用率为20%

选择合适的备份时间

  • 避免在业务高峰期执行备份
  • 合理规划备份窗口
  • 考虑系统资源使用情况

2. 备份存储优化

压缩备份数据

sql
-- 开启备份压缩
ALTER SYSTEM SET backup_compress = 'ON';
ALTER SYSTEM SET backup_compress_algorithm = 'lz4';

备份数据归档

  • 定期将旧备份归档到低成本存储
  • 实现备份数据生命周期管理
  • 自动清理过期备份

3. 备份可靠性优化

备份加密

sql
-- 开启备份加密
ALTER SYSTEM SET backup_encrypt = 'ON';
ALTER SYSTEM SET backup_encrypt_algorithm = 'aes-256-cbc';
ALTER SYSTEM SET backup_encrypt_key = 'your_encryption_key';

定期验证备份

  • 自动验证备份集完整性
  • 定期进行恢复测试
  • 建立备份验证报告

备份监控与管理

1. 备份监控

监控备份任务

sql
-- 查看备份任务状态
SELECT task_id, task_type, tenant_id, start_time, end_time, status, result FROM oceanbase.DBA_OB_BACKUP_TASKS ORDER BY start_time DESC;

-- 查看备份任务进度
SELECT * FROM oceanbase.GV$OB_BACKUP_TASK_PROGRESS WHERE task_id = 'backup_task_123';

备份告警配置

  • 配置备份失败告警
  • 设置备份超时告警
  • 监控备份存储使用率

2. 备份管理

查看备份集信息

sql
-- 查看所有备份集
SELECT * FROM oceanbase.DBA_OB_BACKUP_SETS ORDER BY start_time DESC;

-- 查看备份集详细信息
SELECT * FROM oceanbase.DBA_OB_BACKUP_SET_DETAILS WHERE backup_set_id = 'backup_set_20240118';

管理备份策略

sql
-- 修改备份策略
ALTER BACKUP STRATEGY tenant_backup_strategy RETENTION = '60 DAYS';

-- 删除备份策略
DROP BACKUP STRATEGY tenant_backup_strategy;

常见备份问题及解决方案

1. 备份失败问题

原因

  • 存储位置不可访问
  • 权限不足
  • 资源不足(CPU、内存、磁盘空间)
  • 数据库状态异常

解决方案

sql
-- 检查备份任务失败原因
SELECT * FROM oceanbase.DBA_OB_BACKUP_ERRORS WHERE task_id = 'backup_task_123';

-- 查看详细错误日志
SHOW ALERT LOG FOR TENANT tenant1 START TIME '2024-01-18 00:00:00' END TIME '2024-01-18 02:00:00';

2. 备份速度慢问题

原因

  • 备份并行度不足
  • I/O性能瓶颈
  • 网络带宽限制
  • 数据库负载高

解决方案

sql
-- 增加备份并行度
ALTER SYSTEM SET backup_concurrency = 8;

-- 优化I/O配置
ALTER SYSTEM SET backup_io_thread_count = 16;

-- 调整备份时间窗口

3. 备份存储不足问题

原因

  • 备份策略不合理
  • 备份保留时间过长
  • 未开启备份压缩
  • 未归档旧备份

解决方案

sql
-- 调整备份保留时间
ALTER BACKUP STRATEGY tenant_backup_strategy RETENTION = '15 DAYS';

-- 开启备份压缩
ALTER SYSTEM SET backup_compress = 'ON';

-- 清理过期备份
PURGE BACKUPSET tenant1 BEFORE '2024-01-01';

常见问题(FAQ)

Q1: 全量备份和增量备份的主要区别是什么?

A1: 全量备份包含完整的数据,备份时间长但恢复速度快;增量备份只包含自上次备份以来的更改,备份时间短但恢复时需要先恢复全量备份。全量备份是增量备份的基础。

Q2: 如何选择合适的备份频率?

A2: 备份频率应根据业务重要性、数据变化率和恢复时间目标(RTO)确定。核心业务建议每周1次全量备份+每天1-2次增量备份,普通业务可适当降低频率。

Q3: 备份存储应该如何设计?

A3: 建议采用3-2-1备份策略:3份备份,2种不同介质,1份异地存储。本地存储用于快速恢复,远程或云存储用于灾难恢复。

Q4: 如何验证备份的可靠性?

A4: 定期验证备份集完整性,包括逻辑验证和物理验证;定期进行恢复测试,确保备份可以成功恢复;建立备份验证报告,记录验证结果。

Q5: 如何优化备份性能?

A5: 调整备份并行度和I/O线程数;选择业务低峰期执行备份;开启备份压缩;优化存储性能;合理配置备份参数。

Q6: 增量备份恢复失败怎么办?

A6: 首先检查增量备份集完整性和依赖关系;然后验证全量备份是否完整;如果增量备份损坏,可以使用上一个可用的增量备份或重新执行增量备份;最后根据错误日志定位具体问题。