Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Metz
oceanbase
提交
875077c2
O
oceanbase
项目概览
Metz
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
875077c2
编写于
3月 02, 2022
作者:
O
oceanoverflow
提交者:
LINGuanRen
3月 02, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix tenant level backup restore failure
上级
42d9540f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
135 addition
and
61 deletion
+135
-61
src/share/backup/ob_backup_info_mgr.cpp
src/share/backup/ob_backup_info_mgr.cpp
+82
-46
src/share/backup/ob_backup_info_mgr.h
src/share/backup/ob_backup_info_mgr.h
+7
-1
src/share/backup/ob_multi_backup_dest_util.cpp
src/share/backup/ob_multi_backup_dest_util.cpp
+39
-10
src/share/backup/ob_multi_backup_dest_util.h
src/share/backup/ob_multi_backup_dest_util.h
+7
-4
未找到文件。
src/share/backup/ob_backup_info_mgr.cpp
浏览文件 @
875077c2
...
...
@@ -1142,60 +1142,25 @@ int ObRestoreBackupInfoUtil::get_restore_backup_info_v2_(
const
GetRestoreBackupInfoParam
&
param
,
ObRestoreBackupInfo
&
info
)
{
int
ret
=
OB_SUCCESS
;
ObFakeBackupLeaseService
fake_backup_lease
;
ObExternSingleBackupSetInfoMgr
backup_info_mgr
;
ObLogArchiveBackupInfoMgr
log_archive_backup_info_mgr
;
ObExternTenantLocalityInfoMgr
tenant_locality_info_mgr
;
ObExternPGListMgr
pg_list_mgr
;
ObSimpleBackupSetPath
simple_set_path
;
// largest backup set path
ObSimpleBackupPiecePath
simple_piece_path
;
// smallest backup piece path
ObBackupPath
piece_backup_path
;
const
char
*
backup_dest
=
param
.
backup_dest_
;
const
char
*
backup_cluster_name
=
param
.
backup_cluster_name_
;
const
int64_t
cluster_id
=
param
.
cluster_id_
;
const
int64_t
incarnation
=
param
.
incarnation_
;
const
int64_t
restore_timestamp
=
param
.
restore_timestamp_
;
const
char
*
passwd_array
=
param
.
passwd_array_
;
const
int64_t
cluster_version
=
ObClusterVersion
::
get_instance
().
get_cluster_version
();
ObExternLogArchiveBackupInfo
log_archive_backup_info
;
ObTenantLogArchiveStatus
log_archive_status
;
ObExternTenantLocalityInfo
tenant_locality_info
;
ObBackupPieceInfo
piece_info
;
ObBackupSetFileInfo
backup_set_info
;
if
(
OB_FAIL
(
param
.
get_smallest_backup_piece_path
(
simple_piece_path
)))
{
LOG_WARN
(
"failed to get smallest simple backup piece path"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
param
.
get_largest_backup_set_path
(
simple_set_path
)))
{
LOG_WARN
(
"failed to get smallest largest backup set path"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
backup_info_mgr
.
init
(
simple_set_path
,
fake_backup_lease
)))
{
LOG_WARN
(
"failed to init backup info mgr"
,
K
(
ret
),
K
(
simple_set_path
));
}
else
if
(
OB_FAIL
(
backup_info_mgr
.
get_extern_backup_set_file_info
(
passwd_array
,
backup_set_info
)))
{
LOG_WARN
(
"failed to find backup info"
,
K
(
ret
),
K
(
restore_timestamp
));
}
else
if
(
OB_FAIL
(
piece_backup_path
.
init
(
simple_piece_path
.
get_simple_path
())))
{
LOG_WARN
(
"failed to init piece backup path"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
piece_backup_path
.
join
(
OB_STR_TENANT_CLOG_SINGLE_BACKUP_PIECE_INFO
)))
{
LOG_WARN
(
"failed to join single backup piece info"
);
}
else
if
(
OB_FAIL
(
log_archive_backup_info_mgr
.
read_external_single_backup_piece_info
(
piece_backup_path
,
simple_piece_path
.
get_storage_info
(),
piece_info
,
fake_backup_lease
)))
{
LOG_WARN
(
"failed to read external single backup piece info"
,
K
(
ret
),
K
(
piece_backup_path
),
K
(
simple_piece_path
));
}
else
if
(
backup_set_info
.
snapshot_version_
<
piece_info
.
start_ts_
)
{
ObExternTenantLocalityInfo
tenant_locality_info
;
bool
is_snapshot_restore
=
false
;
if
(
OB_FAIL
(
inner_get_restore_backup_set_info_
(
param
,
backup_set_info
,
tenant_locality_info
,
info
.
sys_pg_key_list_
)))
{
LOG_WARN
(
"failed to inner get restore backup set info"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
check_is_snapshot_restore_
(
param
,
backup_set_info
,
is_snapshot_restore
)))
{
LOG_WARN
(
"failed to check is snapshot backup"
,
K
(
ret
),
K
(
backup_set_info
));
}
else
if
(
!
is_snapshot_restore
&&
OB_FAIL
(
inner_get_restore_backup_piece_info_
(
param
,
piece_info
)))
{
LOG_WARN
(
"failed to inner get restore backup piece info"
,
K
(
ret
));
}
else
if
(
!
is_snapshot_restore
&&
backup_set_info
.
snapshot_version_
<
piece_info
.
start_ts_
)
{
ret
=
OB_ISOLATED_BACKUP_SET
;
LOG_WARN
(
"log archive status is not continues with backup info"
,
K
(
ret
),
K
(
backup_set_info
));
}
else
if
(
OB_FAIL
(
tenant_locality_info_mgr
.
init
(
simple_set_path
,
fake_backup_lease
)))
{
LOG_WARN
(
"failed to init tenant locality info mgr"
,
K
(
ret
),
K
(
simple_set_path
));
}
else
if
(
OB_FAIL
(
tenant_locality_info_mgr
.
get_extern_tenant_locality_info
(
tenant_locality_info
)))
{
LOG_WARN
(
"failed to find tenant locality info"
,
K
(
ret
));
}
else
if
(
backup_set_info
.
cluster_version_
>
cluster_version
)
{
ret
=
OB_NOT_SUPPORTED
;
LOG_ERROR
(
"cannot restore from newer cluster to older cluster"
,
K
(
ret
),
K
(
cluster_version
),
K
(
backup_set_info
));
}
else
if
(
OB_FAIL
(
pg_list_mgr
.
init
(
simple_set_path
,
fake_backup_lease
)))
{
LOG_WARN
(
"failed to get sys pg list"
,
K
(
ret
),
K
(
backup_set_info
),
K
(
simple_set_path
));
}
else
if
(
OB_FAIL
(
pg_list_mgr
.
get_sys_pg_list
(
info
.
sys_pg_key_list_
)))
{
LOG_WARN
(
"failed to get sys pg list"
,
K
(
ret
),
K
(
backup_set_info
));
}
else
if
(
info
.
sys_pg_key_list_
.
empty
())
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"sys pg key list should not be empty"
,
K
(
ret
),
K
(
backup_set_info
));
}
else
{
info
.
compat_mode_
=
tenant_locality_info
.
compat_mode_
;
info
.
frozen_data_version_
=
backup_set_info
.
backup_data_version_
;
...
...
@@ -1214,15 +1179,86 @@ int ObRestoreBackupInfoUtil::get_restore_backup_info_v2_(
info
.
physical_restore_info_
.
inc_backup_set_id_
=
backup_set_info
.
backup_set_id_
;
info
.
physical_restore_info_
.
incarnation_
=
incarnation
;
info
.
physical_restore_info_
.
tenant_id_
=
tenant_locality_info
.
tenant_id_
;
info
.
physical_restore_info_
.
log_archive_round_
=
piece_info
.
key_
.
round_id_
;
info
.
physical_restore_info_
.
compatible_
=
backup_set_info
.
compatible_
;
info
.
physical_restore_info_
.
cluster_version_
=
backup_set_info
.
cluster_version_
;
info
.
physical_restore_info_
.
backup_date_
=
backup_set_info
.
date_
;
if
(
!
is_snapshot_restore
)
{
info
.
physical_restore_info_
.
log_archive_round_
=
piece_info
.
key_
.
round_id_
;
}
FLOG_INFO
(
"get_restore_backup_info"
,
K
(
info
),
K
(
piece_info
),
K
(
backup_set_info
));
}
return
ret
;
}
int
ObRestoreBackupInfoUtil
::
check_is_snapshot_restore_
(
const
GetRestoreBackupInfoParam
&
param
,
const
ObBackupSetFileInfo
&
backup_set_info
,
bool
&
is_snapshot_restore
)
{
int
ret
=
OB_SUCCESS
;
is_snapshot_restore
=
false
;
if
(
param
.
backup_piece_path_list_
.
empty
()
&&
!
param
.
backup_set_path_list_
.
empty
())
{
is_snapshot_restore
=
backup_set_info
.
snapshot_version_
==
param
.
restore_timestamp_
;
LOG_INFO
(
"check is snapshot backup"
,
K
(
backup_set_info
.
snapshot_version_
),
K
(
param
.
restore_timestamp_
));
}
return
ret
;
}
int
ObRestoreBackupInfoUtil
::
inner_get_restore_backup_set_info_
(
const
GetRestoreBackupInfoParam
&
param
,
ObBackupSetFileInfo
&
backup_set_info
,
ObExternTenantLocalityInfo
&
tenant_locality_info
,
common
::
ObIArray
<
common
::
ObPGKey
>
&
sys_pg_key_list
)
{
int
ret
=
OB_SUCCESS
;
ObFakeBackupLeaseService
fake_backup_lease
;
ObExternPGListMgr
pg_list_mgr
;
ObExternSingleBackupSetInfoMgr
backup_info_mgr
;
ObExternTenantLocalityInfoMgr
tenant_locality_info_mgr
;
const
char
*
passwd_array
=
param
.
passwd_array_
;
const
int64_t
cluster_version
=
ObClusterVersion
::
get_instance
().
get_cluster_version
();
ObSimpleBackupSetPath
simple_set_path
;
// largest backup set path
if
(
OB_FAIL
(
param
.
get_largest_backup_set_path
(
simple_set_path
)))
{
LOG_WARN
(
"failed to get smallest largest backup set path"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
backup_info_mgr
.
init
(
simple_set_path
,
fake_backup_lease
)))
{
LOG_WARN
(
"failed to init backup info mgr"
,
K
(
ret
),
K
(
simple_set_path
));
}
else
if
(
OB_FAIL
(
backup_info_mgr
.
get_extern_backup_set_file_info
(
passwd_array
,
backup_set_info
)))
{
LOG_WARN
(
"failed to find backup info"
,
K
(
ret
),
K
(
passwd_array
));
}
else
if
(
OB_FAIL
(
tenant_locality_info_mgr
.
init
(
simple_set_path
,
fake_backup_lease
)))
{
LOG_WARN
(
"failed to init tenant locality info mgr"
,
K
(
ret
),
K
(
simple_set_path
));
}
else
if
(
OB_FAIL
(
tenant_locality_info_mgr
.
get_extern_tenant_locality_info
(
tenant_locality_info
)))
{
LOG_WARN
(
"failed to find tenant locality info"
,
K
(
ret
));
}
else
if
(
backup_set_info
.
cluster_version_
>
cluster_version
)
{
ret
=
OB_NOT_SUPPORTED
;
LOG_ERROR
(
"cannot restore from newer cluster to older cluster"
,
K
(
ret
),
K
(
cluster_version
),
K
(
backup_set_info
));
}
else
if
(
OB_FAIL
(
pg_list_mgr
.
init
(
simple_set_path
,
fake_backup_lease
)))
{
LOG_WARN
(
"failed to get sys pg list"
,
K
(
ret
),
K
(
backup_set_info
),
K
(
simple_set_path
));
}
else
if
(
OB_FAIL
(
pg_list_mgr
.
get_sys_pg_list
(
sys_pg_key_list
)))
{
LOG_WARN
(
"failed to get sys pg list"
,
K
(
ret
),
K
(
backup_set_info
));
}
else
if
(
sys_pg_key_list
.
empty
())
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"sys pg key list should not be empty"
,
K
(
ret
),
K
(
backup_set_info
));
}
return
ret
;
}
int
ObRestoreBackupInfoUtil
::
inner_get_restore_backup_piece_info_
(
const
GetRestoreBackupInfoParam
&
param
,
ObBackupPieceInfo
&
piece_info
)
{
int
ret
=
OB_SUCCESS
;
ObFakeBackupLeaseService
fake_backup_lease
;
ObLogArchiveBackupInfoMgr
log_archive_backup_info_mgr
;
ObSimpleBackupPiecePath
simple_piece_path
;
// smallest backup piece path
ObBackupPath
piece_backup_path
;
if
(
OB_FAIL
(
param
.
get_smallest_backup_piece_path
(
simple_piece_path
)))
{
LOG_WARN
(
"failed to get smallest simple backup piece path"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
piece_backup_path
.
init
(
simple_piece_path
.
get_simple_path
())))
{
LOG_WARN
(
"failed to init piece backup path"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
piece_backup_path
.
join
(
OB_STR_TENANT_CLOG_SINGLE_BACKUP_PIECE_INFO
)))
{
LOG_WARN
(
"failed to join single backup piece info"
);
}
else
if
(
OB_FAIL
(
log_archive_backup_info_mgr
.
read_external_single_backup_piece_info
(
piece_backup_path
,
simple_piece_path
.
get_storage_info
(),
piece_info
,
fake_backup_lease
)))
{
LOG_WARN
(
"failed to read external single backup piece info"
,
K
(
ret
),
K
(
piece_backup_path
),
K
(
simple_piece_path
));
}
return
ret
;
}
int
ObRestoreBackupInfoUtil
::
get_restore_sys_table_ids
(
const
ObPhysicalRestoreInfo
&
info
,
common
::
ObIArray
<
common
::
ObPartitionKey
>
&
pkey_list
)
{
...
...
src/share/backup/ob_backup_info_mgr.h
浏览文件 @
875077c2
...
...
@@ -45,7 +45,6 @@ struct ObLogArchiveSimpleInfo final {
K_
(
cur_piece_create_date
),
K_
(
is_piece_freezing
),
K_
(
prev_piece_id
),
K_
(
prev_piece_create_date
));
};
// 用于切主后确认pg的checkpoint ts,可能会触发内部表的访问。
class
ObLogArchiveInfoMgr
final
{
public:
static
ObLogArchiveInfoMgr
&
get_instance
();
...
...
@@ -171,6 +170,13 @@ private:
static
int
get_restore_backup_info_v1_
(
const
GetRestoreBackupInfoParam
&
param
,
ObRestoreBackupInfo
&
info
);
// get info from simple path level
static
int
get_restore_backup_info_v2_
(
const
GetRestoreBackupInfoParam
&
param
,
ObRestoreBackupInfo
&
info
);
static
int
check_is_snapshot_restore_
(
const
GetRestoreBackupInfoParam
&
param
,
const
ObBackupSetFileInfo
&
backup_set_info
,
bool
&
is_snapshot_restore
);
static
int
inner_get_restore_backup_set_info_
(
const
GetRestoreBackupInfoParam
&
param
,
ObBackupSetFileInfo
&
backup_set_info
,
ObExternTenantLocalityInfo
&
tenant_locality_info
,
common
::
ObIArray
<
common
::
ObPGKey
>
&
sys_pg_keys
);
static
int
inner_get_restore_backup_piece_info_
(
const
GetRestoreBackupInfoParam
&
param
,
ObBackupPieceInfo
&
piece_info
);
};
class
ObRestoreFatalErrorReporter
:
public
share
::
ObThreadPool
{
...
...
src/share/backup/ob_multi_backup_dest_util.cpp
浏览文件 @
875077c2
...
...
@@ -157,6 +157,7 @@ int ObMultiBackupDestUtil::get_multi_backup_path_list(const bool is_preview, con
int64_t
snapshot_version
=
0
;
int64_t
start_replay_log_ts
=
0
;
bool
is_compat_path
=
false
;
bool
is_snapshot_restore
=
false
;
if
(
OB_FAIL
(
get_backup_set_list
(
is_preview
,
cluster_name
,
cluster_id
,
...
...
@@ -166,8 +167,11 @@ int ObMultiBackupDestUtil::get_multi_backup_path_list(const bool is_preview, con
set_list
,
snapshot_version
,
start_replay_log_ts
,
is_compat_path
)))
{
is_compat_path
,
is_snapshot_restore
)))
{
LOG_WARN
(
"failed to get backup set"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
restore_timestamp
),
K
(
list
));
}
else
if
(
is_snapshot_restore
)
{
LOG_INFO
(
"tenant level backup no need get piece list"
,
K
(
tenant_id
));
}
else
{
if
(
is_compat_path
)
{
if
(
OB_FAIL
(
get_compat_backup_piece_list
(
cluster_name
,
...
...
@@ -675,7 +679,7 @@ int ObMultiBackupDestUtil::get_cluster_backup_dest(const ObBackupDest &backup_de
int
ObMultiBackupDestUtil
::
get_backup_set_list
(
const
bool
is_preview
,
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
uint64_t
tenant_id
,
const
int64_t
restore_timestamp
,
const
common
::
ObString
&
backup_dest_str
,
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
,
bool
&
is_compat_path
)
int64_t
&
start_replay_log_ts
,
bool
&
is_compat_path
,
bool
&
is_snapshot_restore
)
{
int
ret
=
OB_SUCCESS
;
snapshot_version
=
0
;
...
...
@@ -703,10 +707,13 @@ int ObMultiBackupDestUtil::get_backup_set_list(const bool is_preview, const char
tmp_list
,
snapshot_version
,
start_replay_log_ts
,
is_compat_path
)))
{
is_compat_path
,
is_snapshot_restore
)))
{
LOG_WARN
(
"failed to inner get backup set list"
,
KR
(
ret
),
K
(
tenant_id
),
K
(
backup_dest
));
}
else
if
(
OB_FAIL
(
append
(
list
,
tmp_list
)))
{
LOG_WARN
(
"failed to add array"
,
KR
(
ret
),
K
(
tmp_list
));
}
else
{
LOG_INFO
(
"get backup set list"
,
K
(
list
));
}
return
ret
;
}
...
...
@@ -714,7 +721,7 @@ int ObMultiBackupDestUtil::get_backup_set_list(const bool is_preview, const char
int
ObMultiBackupDestUtil
::
do_get_backup_set_list
(
const
bool
is_preview
,
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
uint64_t
tenant_id
,
const
int64_t
restore_timestamp
,
const
ObBackupDest
&
backup_dest
,
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
,
bool
&
is_compat_path
)
int64_t
&
start_replay_log_ts
,
bool
&
is_compat_path
,
bool
&
is_snapshot_restore
)
{
int
ret
=
OB_SUCCESS
;
path_list
.
reset
();
...
...
@@ -744,7 +751,8 @@ int ObMultiBackupDestUtil::do_get_backup_set_list(const bool is_preview, const c
backup_dest
,
path_list
,
snapshot_version
,
start_replay_log_ts
)))
{
start_replay_log_ts
,
is_snapshot_restore
)))
{
LOG_WARN
(
"failed to do get cluster level backup set list"
,
KR
(
ret
),
K
(
is_preview
),
...
...
@@ -768,6 +776,8 @@ int ObMultiBackupDestUtil::do_get_backup_set_list(const bool is_preview, const c
}
else
{
LOG_WARN
(
"failed to get extern backup set file infos"
,
KR
(
ret
),
K
(
simple_path
));
}
}
else
if
(
OB_FAIL
(
check_is_snapshot_restore
(
info
,
restore_timestamp
,
is_snapshot_restore
)))
{
LOG_WARN
(
"failed to check is snapshot backup"
,
K
(
ret
),
K
(
info
));
}
else
{
simple_path
.
backup_set_id_
=
info
.
backup_set_id_
;
simple_path
.
copy_id_
=
info
.
copy_id_
;
...
...
@@ -787,7 +797,7 @@ int ObMultiBackupDestUtil::do_get_backup_set_list(const bool is_preview, const c
int
ObMultiBackupDestUtil
::
do_get_backup_set_list_from_cluster_level
(
const
bool
is_preview
,
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
uint64_t
tenant_id
,
const
int64_t
restore_timestamp
,
const
ObBackupDest
&
backup_dest
,
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
)
int64_t
&
start_replay_log_ts
,
bool
&
is_snapshot_restore
)
{
int
ret
=
OB_SUCCESS
;
ObClusterBackupDest
cluster_backup_dest
;
...
...
@@ -823,7 +833,8 @@ int ObMultiBackupDestUtil::do_get_backup_set_list_from_cluster_level(const bool
file_infos
,
path_list
,
snapshot_version
,
start_replay_log_ts
)))
{
start_replay_log_ts
,
is_snapshot_restore
)))
{
LOG_WARN
(
"failed to do inner get backup set list"
,
KR
(
ret
),
K
(
restore_timestamp
));
}
else
{
std
::
sort
(
path_list
.
begin
(),
path_list
.
end
(),
cmp_set
);
...
...
@@ -869,8 +880,10 @@ int ObMultiBackupDestUtil::do_get_backup_set_list_from_cluster_level(const bool
ObClusterBackupDest
cluster_backup_dest
;
ObBackupDest
tmp_backup_dest
;
char
tmp_simple_path_str
[
OB_MAX_BACKUP_DEST_LENGTH
]
=
""
;
if
(
OB_FAIL
(
cluster_backup_dest
.
set
(
tmp_file_info
.
backup_dest_
.
ptr
(),
cluster_name
,
cluster_id
,
OB_START_INCARNATION
)))
{
if
(
OB_FAIL
(
check_is_snapshot_restore
(
tmp_file_info
,
restore_timestamp
,
is_snapshot_restore
)))
{
LOG_WARN
(
"failed to check is snaptshot backup"
,
K
(
ret
),
K
(
tmp_file_info
));
}
else
if
(
OB_FAIL
(
cluster_backup_dest
.
set
(
tmp_file_info
.
backup_dest_
.
ptr
(),
cluster_name
,
cluster_id
,
OB_START_INCARNATION
)))
{
LOG_WARN
(
"failed to set cluster backup dest"
);
}
else
if
(
OB_FAIL
(
base_data_path_info
.
set
(
cluster_backup_dest
,
tmp_file_info
.
tenant_id_
,
...
...
@@ -908,7 +921,8 @@ int ObMultiBackupDestUtil::do_get_backup_set_list_from_cluster_level(const bool
int
ObMultiBackupDestUtil
::
do_inner_get_backup_set_list
(
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
int64_t
restore_timestamp
,
const
ObBackupDest
&
backup_dest
,
const
ObArray
<
ObBackupSetFileInfo
>
&
file_infos
,
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
)
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
,
bool
&
is_snapshot_restore
)
{
int
ret
=
OB_SUCCESS
;
snapshot_version
=
-
1
;
...
...
@@ -939,6 +953,8 @@ int ObMultiBackupDestUtil::do_inner_get_backup_set_list(const char *cluster_name
const
ObBackupSetFileInfo
&
info
=
file_infos
.
at
(
i
);
if
(
OB_SUCCESS
!=
info
.
result_
)
{
// do nothing
}
else
if
(
OB_FAIL
(
check_is_snapshot_restore
(
info
,
restore_timestamp
,
is_snapshot_restore
)))
{
LOG_WARN
(
"failed to check is snaptshot backup"
,
K
(
ret
),
K
(
info
),
K
(
restore_timestamp
));
}
else
if
(
!
ObBackupFileStatus
::
can_show_in_preview
(
info
.
file_status_
))
{
LOG_INFO
(
"backup set info cannot list in preview"
,
K
(
info
));
}
else
{
...
...
@@ -1426,5 +1442,18 @@ int ObMultiBackupDestUtil::check_backup_path_is_backup_backup(const char *cluste
return
ret
;
}
int
ObMultiBackupDestUtil
::
check_is_snapshot_restore
(
const
share
::
ObBackupSetFileInfo
&
backup_set_info
,
const
int64_t
restore_timestamp
,
bool
&
is_snapshot_restore
)
{
int
ret
=
OB_SUCCESS
;
if
(
!
backup_set_info
.
is_valid
()
||
restore_timestamp
<=
0
)
{
ret
=
OB_INVALID_ARGUMENT
;
LOG_WARN
(
"get invalid args"
,
K
(
ret
),
K
(
backup_set_info
),
K
(
restore_timestamp
));
}
else
{
is_snapshot_restore
=
backup_set_info
.
snapshot_version_
==
restore_timestamp
;
}
return
ret
;
}
}
// end namespace share
}
// end namespace oceanbase
src/share/backup/ob_multi_backup_dest_util.h
浏览文件 @
875077c2
...
...
@@ -89,18 +89,19 @@ private:
static
int
get_backup_set_list
(
const
bool
is_preview
,
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
uint64_t
tenant_id
,
const
int64_t
restore_timestamp
,
const
common
::
ObString
&
backup_dest_str
,
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
,
bool
&
is_compat_path
);
bool
&
is_compat_path
,
bool
&
is_snapshot_restore
);
static
int
do_get_backup_set_list
(
const
bool
is_preview
,
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
uint64_t
tenant_id
,
const
int64_t
restore_timestamp
,
const
ObBackupDest
&
backup_dest
,
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
,
bool
&
is_compat_path
);
bool
&
is_compat_path
,
bool
&
is_snapshot_restore
);
static
int
do_get_backup_set_list_from_cluster_level
(
const
bool
is_preview
,
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
uint64_t
tenant_id
,
const
int64_t
restore_timestamp
,
const
ObBackupDest
&
backup_dest
,
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
);
int64_t
&
start_replay_log_ts
,
bool
&
is_snapshot_restore
);
static
int
do_inner_get_backup_set_list
(
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
int64_t
restore_timestamp
,
const
ObBackupDest
&
backup_dest
,
const
ObArray
<
ObBackupSetFileInfo
>
&
file_infos
,
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
);
common
::
ObArray
<
ObSimpleBackupSetPath
>
&
path_list
,
int64_t
&
snapshot_version
,
int64_t
&
start_replay_log_ts
,
bool
&
is_snapshot_restore
);
static
int
get_backup_piece_list
(
const
bool
is_preview
,
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
uint64_t
tenant_id
,
const
int64_t
snapshot_version
,
const
int64_t
start_replay_log_ts
,
const
int64_t
restore_timestamp
,
const
common
::
ObString
&
backup_dest_str
,
...
...
@@ -125,6 +126,8 @@ private:
static
int
check_backup_path_is_backup_backup
(
const
char
*
cluster_name
,
const
int64_t
cluster_id
,
const
common
::
ObString
&
root_path
,
const
common
::
ObString
&
storage_info
,
const
uint64_t
tenant_id
,
bool
&
is_backup_backup
);
static
int
check_is_snapshot_restore
(
const
share
::
ObBackupSetFileInfo
&
backup_set_info
,
const
int64_t
restore_timestamp
,
bool
&
is_snapshot_restore
);
private:
DISALLOW_COPY_AND_ASSIGN
(
ObMultiBackupDestUtil
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录