[FEAT MERGE] Backup Table Names

Co-authored-by: wxhwang <wxhwang@126.com>
This commit is contained in:
LoLolobster
2024-04-11 12:45:22 +00:00
committed by ob-robot
parent 3c0776dbd6
commit 41b19ba941
16 changed files with 1406 additions and 25 deletions

View File

@ -166,6 +166,46 @@ bool ObBackupLSMetaInfosDesc::is_valid() const
return !ls_meta_packages_.empty();
}
/*
*-----------------------------ObBackupPartialTableListDesc-----------------------
*/
OB_SERIALIZE_MEMBER(ObBackupPartialTableListDesc, items_);
bool ObBackupPartialTableListDesc::is_valid() const
{
return count() > 0;
}
void ObBackupPartialTableListDesc::reset()
{
items_.reset();
}
int64_t ObBackupPartialTableListDesc::to_string(char *buf, int64_t buf_len) const
{
int64_t pos = 0;
if (OB_ISNULL(buf) || buf_len <= 0 || !is_valid()) {
// do nothing
} else {
J_OBJ_START();
int64_t total = count();
J_KV("start_item", items_.at(0), "end_item", items_.at(count() - 1), K(total));
J_OBJ_END();
}
return pos;
}
/*
*-----------------------------ObBackupTableListMetaInfoDesc-----------------------
*/
OB_SERIALIZE_MEMBER(ObBackupTableListMetaInfoDesc, scn_, count_, batch_size_, partial_metas_);
bool ObBackupTableListMetaInfoDesc::is_valid() const
{
return scn_.is_valid() && count_ >= 0 && batch_size_ > 0;
}
int ObBackupSetFilter::get_backup_set_array(ObIArray<share::ObBackupSetDesc> &backup_set_array) const
{
@ -1253,3 +1293,81 @@ int ObBackupDataStore::read_deleted_tablet_info_v_4_1_x(
}
return ret;
}
int ObBackupDataStore::write_single_table_list_part_file(const share::SCN &scn, const int64_t part_no, const ObBackupPartialTableListDesc &table_list)
{
int ret = OB_SUCCESS;
share::ObBackupPath path;
if (!is_init()) {
ret = OB_NOT_INIT;
LOG_WARN("backup data extern mgr not init", K(ret));
} else if (!scn.is_valid()) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("scn is not valid", K(ret), K(scn));
} else if (OB_FAIL(ObBackupPathUtil::get_table_list_part_file_path(backup_set_dest_, scn, part_no, path))) {
LOG_WARN("fail to get table list part file path", K(ret), K_(backup_set_dest), K(scn), K(part_no));
} else if (OB_FAIL(write_single_file(path.get_obstr(), table_list))) {
LOG_WARN("fail to write single file", K(ret));
}
return ret;
}
int ObBackupDataStore::write_table_list_meta_info(const share::SCN &scn, const ObBackupTableListMetaInfoDesc &desc)
{
int ret = OB_SUCCESS;
share::ObBackupPath path;
if (!is_init()) {
ret = OB_NOT_INIT;
LOG_WARN("backup data extern mgr not init", K(ret));
} else if (!scn.is_valid()) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("scn is not valid", K(ret), K(scn));
} else if (!desc.is_valid()) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("table list meta desc is not valid", K(ret), K(desc));
} else if (OB_FAIL( ObBackupPathUtil::get_table_list_meta_path(backup_set_dest_, scn, path))) {
LOG_WARN("fail to get table list meta path", K(ret), K(scn));
} else if (OB_FAIL(write_single_file(path.get_obstr(), desc))) {
LOG_WARN("fail to write single file", K(ret), K(desc));
}
return ret;
}
int ObBackupDataStore::read_table_list_file(const char *file_name, ObBackupPartialTableListDesc &desc)
{
int ret = OB_SUCCESS;
ObBackupPath path;
char path_str[OB_MAX_BACKUP_PATH_LENGTH] = { 0 };
if (!is_init()) {
ret = OB_NOT_INIT;
LOG_WARN("backup data extern mgr not init", K(ret));
} else if (OB_FAIL(ObBackupPathUtil::get_table_list_dir_path(backup_set_dest_, path))) {
LOG_WARN("fail to get table list dir path", K(ret), K_(backup_set_dest));
} else if (OB_FAIL(databuff_printf(path_str, OB_MAX_BACKUP_PATH_LENGTH, "%s/%s", path.get_ptr(), file_name))) {
LOG_WARN("fail to databuff printf", K(ret), K(path), K(file_name));
} else if (OB_FAIL(read_single_file(path_str, desc))) {
LOG_WARN("fail to read single file", K(ret), K(path_str));
}
return ret;
}
int ObBackupDataStore::is_table_list_meta_exist(const share::SCN &scn, bool &is_exist)
{
int ret = OB_SUCCESS;
ObBackupPath full_path;
ObBackupIoAdapter util;
const ObBackupStorageInfo *storage_info = get_storage_info();
if (!is_init()) {
ret = OB_NOT_INIT;
LOG_WARN("ObBackupStore not init", K(ret));
} else if (OB_FAIL(ObBackupPathUtil::get_table_list_meta_path(backup_set_dest_, scn, full_path))) {
LOG_WARN("failed to get format file path", K(ret));
} else if (OB_FAIL(util.is_exist(full_path.get_obstr(), storage_info, is_exist))) {
LOG_WARN("failed to check format file exist.", K(ret), K(full_path));
}
return ret;
}

View File

@ -236,6 +236,51 @@ private:
DISALLOW_COPY_AND_ASSIGN(ObBackupLSMetaInfosDesc);
};
struct ObBackupPartialTableListDesc final : public ObExternBackupDataDesc
{
public:
static const uint8_t FILE_VERSION = 1;
OB_UNIS_VERSION(1);
public:
ObBackupPartialTableListDesc()
: ObExternBackupDataDesc(ObBackupFileType::BACKUP_TABLE_LIST_FILE, FILE_VERSION),
items_() {}
virtual ~ObBackupPartialTableListDesc() {}
bool is_valid() const override;
void reset();
int64_t count() const { return items_.count(); }
DECLARE_TO_STRING;
public:
ObSArray<ObBackupTableListItem> items_;
private:
DISALLOW_COPY_AND_ASSIGN(ObBackupPartialTableListDesc);
};
struct ObBackupTableListMetaInfoDesc final : public ObExternBackupDataDesc
{
public:
static const uint8_t FILE_VERSION = 1;
OB_UNIS_VERSION(1);
public:
ObBackupTableListMetaInfoDesc()
: ObExternBackupDataDesc(ObBackupFileType::BACKUP_TABLE_LIST_META_FILE, FILE_VERSION),
scn_(share::SCN::min_scn()),
count_(0),
batch_size_(0),
partial_metas_() {}
virtual ~ObBackupTableListMetaInfoDesc() {}
bool is_valid() const override;
TO_STRING_KV(K_(count), K_(batch_size), K_(partial_metas));
public:
share::SCN scn_;
int64_t count_;
int64_t batch_size_;
common::ObSArray<ObBackupPartialTableListMeta> partial_metas_;
private:
DISALLOW_COPY_AND_ASSIGN(ObBackupTableListMetaInfoDesc);
};
class ObBackupSetFilter : public ObBaseDirEntryOperator
{
public:
@ -316,7 +361,11 @@ public:
// 4.1 interface to get tablet to ls
int read_tablet_to_ls_info_v_4_1_x(const int64_t turn_id, const ObLSID &ls_id, ObIArray<ObTabletID> &tablet_ids);
int read_deleted_tablet_info_v_4_1_x(const ObLSID &ls_id, ObIArray<ObTabletID> &deleted_tablet_ids);
// table list
int write_single_table_list_part_file(const share::SCN &scn, const int64_t part_no, const ObBackupPartialTableListDesc &table_list);
int write_table_list_meta_info(const share::SCN &scn, const ObBackupTableListMetaInfoDesc &desc);
int read_table_list_file(const char* file_name, ObBackupPartialTableListDesc &desc);
int is_table_list_meta_exist(const share::SCN &scn, bool &is_exist);
TO_STRING_KV(K_(backup_desc));
public: