如何复制备份数据到异地进行恢复

本文主要介绍如何备份数据在异地恢复。

生产和测试环境网络不通的情况下,生产集群的备份数据在生产网络的 OSS上,需要下载下来然后复制到测试环境。建议复制到测试环境的 OSS 或者 NFS 上,确保测试环境的备份恢复机器可以访问到这份数据。

有两种方法,您可以根据实际情况选择其一。

适用版本

OceanBase 数据库 V2.2.52 及以前使用逻辑备份的版本。

全量恢复

在生产集群上,复制全部的备份数据到移动硬盘或其他介质。然后放入到测试环境的 OSS 上或者 NFS 上。

注意

如果复制到 OSS 上,目录必须保证不影响测试集群的备份数据。目前,生产和测试都采用 obbackup bucket,但是集群名字有区别。可以在测试环境的 OSS 上保证如下格式:

OSS://obbackup/cluster_name

OSS://obbackup/another_cluster_name

仅恢复指定租户

如果仅需要恢复一个租户到特定时间点,可以在生产环境的 OSS 上,复制如下信息:

  • oss://obbackup/cluster_name/目录下的所有文件。
  • oss://obbackup/cluster_name/目录的子目录中以 tenant_id命名的目录。

其中,tenant_id表示要恢复的租户 id,major_version表示要恢复的时间点 OceanBase 数据库的合并版本:

su admin cp -rp oss://obbackup/cluster_name/*list <目的端目录> cp -rp oss://obbackup/cluster_name/<major_version>/<tenant_id> <目的端目录> cp -rp oss://obbackup/cluster_name/base_data_<major_version>/<tenant_id> <目的端目录> cp -rp oss://obbackup/cluster_name/inc_data/<tenant_id> <目的端目录> cp -rp oss://obbackup/cluster_name/tenant_id/<tenant_id> <目的端目录>

结果存在三个文件和四个目录:

  • 文件:

all_tenant_id_list dropped_tenant_id_list inc_all_tenant_id_list

  • 文件夹:

32 base_data_32 inc_data tenant_id

目录结构如下:

$tree -a . ├── 32 │ └── 1007 │ ├── 1107208209191461 │ ├── 1107208209191463 │ ├── create_database_definition │ ├── create_tenant_definition │ ├── create_user_definition │ ├── data_table_ids_list │ ├── index_table_ids_list │ ├── resource_pool_definition │ ├── resource_unit_definition │ ├── system_variable_definition │ └── user_privilege_definition ├── all_tenant_id_list ├── base_data_32 │ └── 1007 │ ├── 1107208209220433 │ │ └── 0 │ │ └── 1107208209220433 │ │ └── 30_0 │ ├── 1107208209220434 │ │ └── 0 │ │ └── 1107208209220434 │ │ └── 31_0 ├── dropped_tenant_id_list ├── inc_all_tenant_id_list ├── inc_data │ └── 1007 │ └── 0 │ ├── 1 │ ├── 1.meta │ └── checkpoint └── tenant_id └── 1007 └── backup_info

2333 444

2333 444