From 550c8ffaaf5ba2cdd15393ee3aa091c378f602eb Mon Sep 17 00:00:00 2001 From: obdev Date: Thu, 21 Sep 2023 02:44:03 +0000 Subject: [PATCH] fix incompatibility between 4.1 backup set files and 4.2 ob_admin --- .../ob_admin_dump_backup_data_executor.cpp | 107 +++++++++--------- .../ob_admin_dump_backup_data_executor.h | 2 +- 2 files changed, 52 insertions(+), 57 deletions(-) diff --git a/tools/ob_admin/backup_tool/ob_admin_dump_backup_data_executor.cpp b/tools/ob_admin/backup_tool/ob_admin_dump_backup_data_executor.cpp index e412f7ccc4..a29ab7806f 100644 --- a/tools/ob_admin/backup_tool/ob_admin_dump_backup_data_executor.cpp +++ b/tools/ob_admin/backup_tool/ob_admin_dump_backup_data_executor.cpp @@ -959,7 +959,6 @@ int ObAdminDumpBackupDataExecutor::dump_tenant_backup_path_() share::ObBackupPath path; share::ObBackupStorageInfo storage_info; storage::ObTenantBackupSetInfosDesc tenant_backup_set_infos; - storage::ObExternTenantLocalityInfoDesc locality_info; ObSArray backup_set_array; ObArray target_backup_set; if (OB_FAIL(get_backup_set_placeholder_dir_path(path))) { @@ -971,33 +970,26 @@ int ObAdminDumpBackupDataExecutor::dump_tenant_backup_path_() } else if (OB_FAIL(op.get_backup_set_array(backup_set_array))) { STORAGE_LOG(WARN, "fail to get backup set names", K(ret)); } else if (!backup_set_array.empty()) { - storage::ObBackupDataStore::ObBackupSetDescComparator cmp; - std::sort(backup_set_array.begin(), backup_set_array.end(), cmp); - share::ObBackupSetDesc latest_backup_set_desc = backup_set_array.at(backup_set_array.count() - 1); - if (OB_FAIL(read_locality_info_file(backup_path_, latest_backup_set_desc, locality_info))) { - STORAGE_LOG(WARN, "fail to read locality info file", K(ret), K(backup_path_), K(latest_backup_set_desc), K(storage_info)); - } else { - for (int64_t i = backup_set_array.count() - 1; OB_SUCC(ret) && i >= 0; i--) { - path.reset(); - const share::ObBackupSetDesc &backup_set_dir = backup_set_array.at(i); - if (OB_FAIL(get_tenant_backup_set_infos_path_(backup_set_dir, path))) { - STORAGE_LOG(WARN, "fail to get backup set infos path"); - } else if (OB_FAIL(ObAdminDumpBackupDataUtil::read_backup_info_file(path.get_obstr(), ObString(storage_info_), tenant_backup_set_infos))) { - if (OB_BACKUP_FILE_NOT_EXIST == ret) { - STORAGE_LOG(WARN, "backup set file is not exist", K(ret), K(path)); - ret = OB_SUCCESS; - } else { - STORAGE_LOG(WARN, "fail to read backup info file", K(ret)); - } - } else if (OB_FAIL(filter_backup_set_(tenant_backup_set_infos, backup_set_array, target_backup_set))) { - STORAGE_LOG(WARN, "fail to filter backup set", K(ret)); - } else if (OB_FAIL(inner_print_common_header_(path.get_obstr(), ObString(storage_info_)))) { - STORAGE_LOG(WARN, "fail to print common header", K(ret)); - } else if (OB_FAIL(dump_tenant_backup_set_infos_(target_backup_set, locality_info))) { - STORAGE_LOG(WARN, "fail to dump tenant backup set infos", K(ret)); + for (int64_t i = backup_set_array.count() - 1; OB_SUCC(ret) && i >= 0; i--) { + path.reset(); + const share::ObBackupSetDesc &backup_set_dir = backup_set_array.at(i); + if (OB_FAIL(get_tenant_backup_set_infos_path_(backup_set_dir, path))) { + STORAGE_LOG(WARN, "fail to get backup set infos path"); + } else if (OB_FAIL(ObAdminDumpBackupDataUtil::read_backup_info_file(path.get_obstr(), ObString(storage_info_), tenant_backup_set_infos))) { + if (OB_BACKUP_FILE_NOT_EXIST == ret) { + STORAGE_LOG(WARN, "backup set file is not exist", K(ret), K(path)); + ret = OB_SUCCESS; } else { - break; + STORAGE_LOG(WARN, "fail to read backup info file", K(ret)); } + } else if (OB_FAIL(filter_backup_set_(tenant_backup_set_infos, backup_set_array, target_backup_set))) { + STORAGE_LOG(WARN, "fail to filter backup set", K(ret)); + } else if (OB_FAIL(inner_print_common_header_(path.get_obstr(), ObString(storage_info_)))) { + STORAGE_LOG(WARN, "fail to print common header", K(ret)); + } else if (OB_FAIL(dump_tenant_backup_set_infos_(target_backup_set))) { + STORAGE_LOG(WARN, "fail to dump tenant backup set infos", K(ret)); + } else { + break; } } } @@ -1645,24 +1637,17 @@ int ObAdminDumpBackupDataExecutor::print_tenant_backup_set_infos_() int ret = OB_SUCCESS; ObBackupDest backup_tenant_dest; ObBackupSetFileDesc latest_file_desc; - ObBackupSetDesc backup_set_desc; storage::ObTenantBackupSetInfosDesc file_desc; - storage::ObExternTenantLocalityInfoDesc locality_info; - ObBackupPath locality_info_path; if (OB_FAIL(inner_print_common_header_(backup_path_, storage_info_))) { STORAGE_LOG(WARN, "fail to inner print common header", K(ret)); } else if (OB_FAIL(ObAdminDumpBackupDataUtil::read_backup_info_file(ObString(backup_path_), ObString(storage_info_), file_desc))) { STORAGE_LOG(WARN, "fail to read archive piece info file", K(ret), K(backup_path_), K(storage_info_)); } else if(!file_desc.backup_set_infos_.empty()) { latest_file_desc = file_desc.backup_set_infos_.at(file_desc.backup_set_infos_.count() - 1); - backup_set_desc.backup_set_id_ = latest_file_desc.backup_set_id_; - backup_set_desc.backup_type_ = latest_file_desc.backup_type_; - if (OB_FAIL(read_locality_info_file(latest_file_desc.backup_path_.ptr(), backup_set_desc, locality_info))) { - STORAGE_LOG(WARN, "fail to read locality info file", K(ret), K(latest_file_desc), K(backup_set_desc)); - } else if (OB_FAIL(backup_tenant_dest.set(latest_file_desc.backup_path_))) { + if (OB_FAIL(backup_tenant_dest.set(latest_file_desc.backup_path_))) { STORAGE_LOG(WARN, "fail to set backup tenant dest", K(ret), K(latest_file_desc), K(storage_info_)); - } else if (OB_FAIL(dump_tenant_backup_set_infos_(file_desc.backup_set_infos_, locality_info))) { - STORAGE_LOG(WARN, "fail to dump archive piece info file", K(ret), K(file_desc), K(locality_info)); + } else if (OB_FAIL(dump_tenant_backup_set_infos_(file_desc.backup_set_infos_))) { + STORAGE_LOG(WARN, "fail to dump archive piece info file", K(ret), K(file_desc)); } } return ret; @@ -2343,28 +2328,38 @@ int ObAdminDumpBackupDataExecutor::dump_tenant_diagnose_info_(const storage::ObE return ret; } -int ObAdminDumpBackupDataExecutor::dump_tenant_backup_set_infos_(const ObIArray &backup_set_infos, - const storage::ObExternTenantLocalityInfoDesc &locality_info) +int ObAdminDumpBackupDataExecutor::dump_tenant_backup_set_infos_(const ObIArray &backup_set_infos) { int ret = OB_SUCCESS; - PrintHelper::print_dump_title("tenant backup set infos"); - ARRAY_FOREACH_X(backup_set_infos, i , cnt, OB_SUCC(ret)) { - const share::ObBackupSetFileDesc &backup_set_desc = backup_set_infos.at(i); - int64_t pos = 0; - char buf[OB_MAX_CHAR_LEN] = { 0 }; - char str_buf[OB_MAX_TEXT_LENGTH] = { 0 }; - char min_restore_scn_str_buf[OB_MAX_TIME_STR_LENGTH] = { 0 }; - if (OB_FAIL(ObTimeConverter::scn_to_str(backup_set_desc.min_restore_scn_.get_val_for_inner_table_field(), - locality_info.sys_time_zone_wrap_.get_time_zone_info(), - min_restore_scn_str_buf, - OB_MAX_TIME_STR_LENGTH, - pos))) { - STORAGE_LOG(WARN, "fail to convert scn to str", K(ret), K(backup_set_desc)); - } else if (OB_FAIL(databuff_printf(buf, OB_MAX_CHAR_LEN, "%ld", i+1))) { - STORAGE_LOG(WARN, "fail to printf buf", K(ret), K(i)); - } else if (OB_FALSE_IT(backup_set_desc.to_string(min_restore_scn_str_buf, str_buf, OB_MAX_TEXT_LENGTH))) { - } else { - PrintHelper::print_dump_line(buf, str_buf); + storage::ObBackupDataStore store; + ObTimeZoneInfoWrap time_zone_wrap; + ObBackupDest backup_set_dest; + if (OB_FAIL(backup_set_dest.set(backup_path_, storage_info_))) { + STORAGE_LOG(WARN, "fail to set backup set dest", K(ret), K(backup_path_), K(storage_info_)); + } else if (OB_FAIL(store.init(backup_set_dest))) { + STORAGE_LOG(WARN, "fail to init backup data store", K(ret), K(backup_path_), K(storage_info_)); + } else if (OB_FAIL(store.get_backup_sys_time_zone_wrap(time_zone_wrap))) { + STORAGE_LOG(WARN, "fail to get backup sys time zone wrap", K(ret), K(store)); + } else { + PrintHelper::print_dump_title("tenant backup set infos"); + ARRAY_FOREACH_X(backup_set_infos, i , cnt, OB_SUCC(ret)) { + const share::ObBackupSetFileDesc &backup_set_desc = backup_set_infos.at(i); + int64_t pos = 0; + char buf[OB_MAX_CHAR_LEN] = { 0 }; + char str_buf[OB_MAX_TEXT_LENGTH] = { 0 }; + char min_restore_scn_str_buf[OB_MAX_TIME_STR_LENGTH] = { 0 }; + if (OB_FAIL(ObTimeConverter::scn_to_str(backup_set_desc.min_restore_scn_.get_val_for_inner_table_field(), + time_zone_wrap.get_time_zone_info(), + min_restore_scn_str_buf, + OB_MAX_TIME_STR_LENGTH, + pos))) { + STORAGE_LOG(WARN, "fail to convert scn to str", K(ret), K(time_zone_wrap), K(backup_set_desc)); + } else if (OB_FAIL(databuff_printf(buf, OB_MAX_CHAR_LEN, "%ld", i+1))) { + STORAGE_LOG(WARN, "fail to printf buf", K(ret), K(i)); + } else if (OB_FALSE_IT(backup_set_desc.to_string(min_restore_scn_str_buf, str_buf, OB_MAX_TEXT_LENGTH))) { + } else { + PrintHelper::print_dump_line(buf, str_buf); + } } } return ret; diff --git a/tools/ob_admin/backup_tool/ob_admin_dump_backup_data_executor.h b/tools/ob_admin/backup_tool/ob_admin_dump_backup_data_executor.h index 978336bb56..70b56e09e8 100644 --- a/tools/ob_admin/backup_tool/ob_admin_dump_backup_data_executor.h +++ b/tools/ob_admin/backup_tool/ob_admin_dump_backup_data_executor.h @@ -165,7 +165,7 @@ private: int dump_tenant_locality_info_(const storage::ObExternTenantLocalityInfoDesc &locality_info); int dump_tenant_diagnose_info_(const storage::ObExternTenantDiagnoseInfoDesc &diagnose_info); int dump_backup_set_info(const share::ObBackupSetFileDesc &backup_set_info); - int dump_tenant_backup_set_infos_(const ObIArray &backup_set_infos, const storage::ObExternTenantLocalityInfoDesc &locality_info); + int dump_tenant_backup_set_infos_(const ObIArray &backup_set_infos); int dump_backup_ls_meta_infos_file_(const storage::ObBackupLSMetaInfosDesc &ls_meta_infos); int dump_archive_round_start_file_(const share::ObRoundStartDesc &round_start_file); int dump_archive_round_end_file_(const share::ObRoundEndDesc round_end_file);