暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OceanBase数据库单表恢复操作

460

目的:

备份恢复是OceanBase数据高可靠的核心组件,通过纯 SQL 的命令就可以使用完整的备份和恢复功能。
在OceanBase数据库的世界里,数据的高可靠机制主要有多副本的容灾复制、回收站、主备库和备份恢复等,备份恢复是保护用户数据的最后手段。


知识点描述

OceanBase数据库提供租户级别的恢复能力,支持微秒级别的恢复精度。
租户恢复保证了跨表、跨分区的全局一致性。
OceanBase数据库的恢复主要包含下面几步:
  • 1)恢复系统表的数据
  • 2)恢复系统表的日志
  • 3)修正系统表的数据
  • 4)恢复用户表的数据
  • 5)恢复用户表的日志

标准指导操作

2.1 前提条件

  • 存在成功备份可恢复的数据。
  • 集群正常运行,并且剩余资源足够创建恢复租户。

2.2 单表恢复流程

2.2.1 检查备份情况

1)检查日志备份是否开启【开启日志备份后可以进行增量备份】
select * from cdb_ob_backup_archivelog_summary;
复制
如下图,DOING表示已开启归档,由于之前调整过备份路径,故此处有有两个日志备份记录:
图片
2)检查全备完成情况【sys租户执行】
SELECT * FROM CDB_OB_BACKUP_SET_DETAILS order by start_time desc limit 6;
复制
图片
确认有可用的备份。

2.2.2 恢复前准备

1)为恢复后的租户新建资源规格和资源池【由于只恢复单表,unit规格不用分配太大】
--创建unit规格:
CREATE RESOURCE UNIT restore_unit_2c6G max_cpu 2, max_memory
6442450944, max_iops 10240, max_disk_size 53687091200,
max_session_num 64, MIN_CPU=2, MIN_MEMORY=6442450944, MIN_IOPS=10240;
复制
--创建资源池:
CREATE RESOURCE POOL restore_2c6G_pool_1 unit =
'restore_unit_2c6G', unit_num = 1, zone_list = ('zone1','zone2','zone3');
复制
查看配置如下:
图片
2)查看并调整当前恢复并发度【restore_concurrency:用于设置从备份恢复租户数据时的最大并发度】
show parameters like 'restore_concurrency';
复制
图片
如上图,当前恢复并发度为10,可适当调高。
--调高恢复数据最大并发:
ALTER SYSTEM SET restore_concurrency = 20;
复制
图片
3)检查合并情况
select zone, name, value from __all_zone where name in ('frozen_version', 'last_merged_version');
复制
图片
SELECT * FROM __all_zone WHERE name='merge_status';
复制
图片
【确认全局版本号一致,IDLE表示合并完成】

2.2.3 发起单表恢复

单表恢复命令:
ALTER SYSTEM RESTORE <OWNER>.<TABLE_NAME> FOR 
<NEW_TENANT_NAME> FROM <OLD_TENANT_NAME> AT 'file:///obbackup/' UNTIL '2023-11-30 12:00:00' WITH 
'backup_cluster_name=ob_test&backup_cluster_id=xxx&pool_list=restore_2c6G_pool';
复制
--已临时新建一张测试表oms_migrate.test1做测试【以”2023-11-30 17:15:41”作为恢复时间点】
图片
1)发起恢复
ALTER SYSTEM RESTORE OMS_MIGRATE.TEST1 FOR restore_20231130
FROM hbjhdb AT 'file:///data/nfs/' UNTIL '2023-11-30 17:15:41' WITH 
'backup_cluster_name=yewujihe&backup_cluster_id=1687507918&pool_list=restore_2c6G_pool_1';
复制
2)查看恢复任务
select * from CDB_OB_RESTORE_PROGRESS\G
复制
图片
【上图可以看到,单表恢复时,指定的表会加入恢复任务的白名单中】
3)如上图,恢复任务在执行恢复系统表,当前查看系统表恢复情况
select svr_ip,role,is_restore,count(*) from __all_root_table a,
(select value from __all_restore_info) as b
where a.tenant_id=b.value
group by role,is_restore,svr_ip
order by svr_ip,is_restore;
复制
图片
返回空,表示系统表恢复完成。
4)当开始恢复用户表,查看用户表的恢复情况
select svr_ip,role,is_restore,count(*) from __all_virtual_meta_table a,
(select value from __all_restore_info) as b
where a.tenant_id=b.value
group by role,is_restore,svr_ip
order by svr_ip,is_restore;
复制
图片
图片
返回为空,表示测试表已恢复完成。
5)查看恢复历史
select * from CDB_OB_RESTORE_HISTORY where tenant_name = 'restore_20231130' and status = 'RESTORE_SUCCESS'\G
复制
图片
也可以查看具体的恢复过程及子任务耗时:
select  * from __all_rootservice_event_history where module='physical_restore' and value2 = 'restore_20231130' order by gmt_create desc;
复制
图片
6)检查恢复结果
登陆恢复后的租户,查看OMS_MIGRATE.TEST1表数据。
【由于存在日志备份延迟,只恢复出”2023-11-30 17:15:41”时间点之前的数据】

图片图片

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论