外观
OceanBase 租户备份与恢复
租户备份类型
物理备份
- 全量物理备份:备份租户的所有数据文件
- 增量物理备份:备份自上次备份以来变化的数据
- 日志备份:备份租户的事务日志,用于 PITR(Point-in-Time Recovery)
逻辑备份
- 全量逻辑备份:使用 mysqldump 或 OBLOADER/OBUNLOADER 备份租户的逻辑数据
- 增量逻辑备份:通过日志挖掘或变更数据捕获实现增量逻辑备份
租户备份配置
配置备份目的地
sql
-- 配置租户级备份目的地
ALTER SYSTEM SET backup_dest = 'file:///data/ob_backup' TENANT = 'tenant_name';
-- 配置备份集大小限制
ALTER SYSTEM SET backup_set_size = '10G' TENANT = 'tenant_name';
-- 配置备份并发度
ALTER SYSTEM SET backup_concurrency = 4 TENANT = 'tenant_name';配置日志归档
sql
-- 启用日志归档
ALTER SYSTEM SET enable_syslog_recycle = 'true' TENANT = 'tenant_name';
-- 配置日志归档目的地
ALTER SYSTEM SET log_archive_dest = 'file:///data/ob_archive' TENANT = 'tenant_name';
-- 配置日志归档模式
ALTER SYSTEM SET log_archive_mode = 'all' TENANT = 'tenant_name';配置备份策略
sql
-- 创建备份策略
CREATE BACKUP POLICY 'policy_name'
TENANT = 'tenant_name'
BACKUP TYPE = FULL
BACKUP DIR = 'file:///data/ob_backup'
BACKUP RETENTION DAYS = 7
BACKUP SCHEDULE = '0 0 * * *';
-- 启用备份策略
ALTER BACKUP POLICY 'policy_name' ENABLE;租户备份操作
手动执行全量备份
sql
-- 执行租户全量备份
BACKUP TENANT 'tenant_name' FULL TO 'file:///data/ob_backup/full_backup';
-- 查看备份进度
SELECT * FROM oceanbase.DBA_OB_BACKUP_PROGRESS WHERE tenant_name = 'tenant_name';
-- 查看备份集信息
SELECT * FROM oceanbase.DBA_OB_BACKUP_SET WHERE tenant_name = 'tenant_name' ORDER BY backup_set_id DESC;手动执行增量备份
sql
-- 执行租户增量备份
BACKUP TENANT 'tenant_name' INCREMENTAL TO 'file:///data/ob_backup/incr_backup'
BASE ON BACKUPSET 'full_backup_set_id';
-- 查看增量备份集信息
SELECT * FROM oceanbase.DBA_OB_BACKUP_SET WHERE backup_type = 'INCREMENTAL' AND tenant_name = 'tenant_name' ORDER BY backup_set_id DESC;手动执行日志备份
sql
-- 执行日志备份
BACKUP TENANT 'tenant_name' LOGS TO 'file:///data/ob_backup/log_backup';
-- 查看日志备份信息
SELECT * FROM oceanbase.DBA_OB_BACKUP_LOG WHERE tenant_name = 'tenant_name' ORDER BY log_id DESC;租户恢复操作
查看可恢复的备份集
sql
-- 查看可用的全量备份集
SELECT * FROM oceanbase.DBA_OB_RESTORE_AVAILABLE_BACKUPSET WHERE tenant_name = 'tenant_name' AND backup_type = 'FULL';
-- 查看可用的增量备份集
SELECT * FROM oceanbase.DBA_OB_RESTORE_AVAILABLE_BACKUPSET WHERE tenant_name = 'tenant_name' AND backup_type = 'INCREMENTAL';执行租户恢复
sql
-- 恢复租户到指定时间点
RESTORE TENANT 'tenant_name' FROM 'file:///data/ob_backup'
BACKUPSET 'full_backup_set_id'
INCREMENTAL BACKUPSET 'incr_backup_set_id'
UNTIL TIME '2023-12-31 23:59:59';
-- 查看恢复进度
SELECT * FROM oceanbase.DBA_OB_RESTORE_PROGRESS WHERE tenant_name = 'tenant_name';
-- 恢复完成后激活租户
ALTER TENANT 'tenant_name' ACTIVATE;克隆租户
sql
-- 从备份集克隆租户
CREATE TENANT 'new_tenant'
FROM BACKUPSET 'backup_set_id'
BACKUP DEST = 'file:///data/ob_backup'
PRIMARY_ZONE = 'zone1'
RESOURCE_POOL_LIST = ('resource_pool_name');
-- 激活克隆的租户
ALTER TENANT 'new_tenant' ACTIVATE;租户备份与恢复最佳实践
备份策略建议
- 定期全量备份:建议每周执行一次全量备份
- 定期增量备份:建议每天执行一次增量备份
- 持续日志备份:启用日志归档,确保可以进行 PITR
- 多副本备份:将备份数据存储在多个位置,提高备份可靠性
- 定期验证备份:定期恢复备份,验证备份的可用性
恢复策略建议
- 制定恢复计划:针对不同场景制定详细的恢复计划
- 定期演练恢复:定期进行恢复演练,验证恢复流程
- 监控恢复进度:在恢复过程中密切监控恢复进度和系统资源使用
- 验证恢复结果:恢复完成后,验证数据完整性和一致性
- 记录恢复过程:详细记录恢复过程,便于后续分析和优化
性能优化建议
- 调整备份并发度:根据系统资源情况调整备份并发度
- 优化备份目的地:使用高性能存储设备存储备份数据
- 避开业务高峰期:在业务低峰期执行备份和恢复操作
- 合理设置备份集大小:根据存储设备情况设置合适的备份集大小
- 优化恢复并行度:根据系统资源情况调整恢复并行度
租户备份与恢复监控
监控备份进度
sql
-- 查看备份进度
SELECT * FROM oceanbase.DBA_OB_BACKUP_PROGRESS WHERE tenant_name = 'tenant_name';
-- 查看备份历史
SELECT * FROM oceanbase.DBA_OB_BACKUP_HISTORY WHERE tenant_name = 'tenant_name' ORDER BY backup_id DESC;监控恢复进度
sql
-- 查看恢复进度
SELECT * FROM oceanbase.DBA_OB_RESTORE_PROGRESS WHERE tenant_name = 'tenant_name';
-- 查看恢复历史
SELECT * FROM oceanbase.DBA_OB_RESTORE_HISTORY WHERE tenant_name = 'tenant_name' ORDER BY restore_id DESC;监控备份空间使用
sql
-- 查看备份集大小
SELECT backup_set_id, backup_type, tenant_name, ROUND(total_bytes/1024/1024/1024, 2) AS size_gb
FROM oceanbase.DBA_OB_BACKUP_SET
WHERE tenant_name = 'tenant_name'
ORDER BY backup_set_id DESC;常见问题(FAQ)
Q1: 租户备份会影响业务性能吗?
A1: 租户备份会占用一定的系统资源,可能会对业务性能产生一定影响。建议在业务低峰期执行备份操作,并合理配置备份并发度和资源使用。
Q2: 如何验证备份的可用性?
A2: 可以通过以下方式验证备份的可用性:
- 定期执行恢复演练
- 使用备份集克隆测试租户
- 验证备份集的元数据完整性
sql
-- 验证备份集完整性
VALIDATE BACKUPSET 'backup_set_id' FROM 'file:///data/ob_backup';Q3: 如何进行跨集群的租户恢复?
A3: 跨集群租户恢复的步骤如下:
- 将备份数据复制到目标集群
- 在目标集群创建资源池
- 使用备份集在目标集群恢复租户
- 激活恢复的租户
- 验证恢复结果
Q4: 如何优化租户备份速度?
A4: 可以通过以下方式优化租户备份速度:
- 增加备份并发度
- 使用高性能存储设备
- 优化网络配置(如果备份到远程位置)
- 避开业务高峰期
- 合理设置备份集大小
sql
-- 调整备份并发度
ALTER SYSTEM SET backup_concurrency = 8 TENANT = 'tenant_name';Q5: 如何处理备份失败?
A5: 备份失败时,可以尝试以下操作:
- 查看备份日志,分析失败原因
- 检查备份目的地的空间和权限
- 检查系统资源使用情况
- 调整备份参数
- 重试备份操作
sql
-- 查看备份历史和失败原因
SELECT * FROM oceanbase.DBA_OB_BACKUP_HISTORY WHERE tenant_name = 'tenant_name' AND status = 'FAILED' ORDER BY backup_id DESC;