Hologres实例间迁移

Hologres支持多种方式的导入导出,如数据集成、Holo Shipper、跨库查询等,提供非常方便快捷的数据传输功能,在实际应用场景中经常有Hologres实例之间数据互访迁移的情况。本文为您介绍Hologres实例间数据迁移最佳实践。

Hologres实例间全量数据迁移

将一个实例的全量数据迁移至另外一个实例,可以使用Hologres提供的迁移工具Holo Shipper,只需要一个命令语句,即可简单方便实现全量数据迁移操作,详情请参见Holo Shipper

说明

如果实例中的数据量较大,如TB级别或者以上的数据量,建议不要使用Holo Shipper,否则会因为ECS带宽不足等原因导致数据传输时间过长。超大数据量的迁移建议重新从数据来源端写入至Hologres另外一个实例。

迁移全量数据包括账号、权限等,代码示例如下:

$ java -jar holo-shipper.jar -s holo -h xx.xx.xx.xx -p xxxx -u username -w password -d holo -h xx.xx.xx.xx -p xxxx -u username2 -w password2  -l ship_list_json_path

ship_list_json_path中JSON的内容如下。

[
  {
    "dbName": "DB",
    "shipList": {
      "schema1": ["*"],
      "schema2": ["*"]
    }
  }
]

Hologres实例间部分表的全量数据迁移

将实例的部分表全量数据迁移至另外一个实例,也可以通过迁移工具Holo Shipper实现,只需要一个命令语句即可实现数据迁移,操作简单方便。如下示例将一个Hologres实例中的某些表迁移到另一个Hologres实例中,保留源表Owner和权限,代码示例如下:

将一个Holo实例中的某些表ship到另一个Holo实例中,保留源表owner和权限,不同步与这些表无关的用户

$ java -jar holo-shipper.jar -s holo -h xx.xx.xx.xx -p xxxx -u username -w password -d holo -h xx.xx.xx.xx -p xxxx -u username2 -w password2  -l ship_list_json_path --no-all-roles

ship_list_json_path中JSON的内容如下(不需要迁移的表,配置迁移blackList,则不会被迁移)。

--迁移table1和table2表的全量数据,不迁移table3表的数据
[
 {
     "dbName": "DB1",
     "shipList": {
         "schema1": ["*"],
         "schema2": ["table1", "table2"]
     },
     "blackList": {
         "schema1": ["table3"]
     }
 }
]

下载超过10000行的数据

HoloWeb、DataStudio的Hologres SQL模块仅支持10000行以内的数据下载,如果要下载超过10000行的结果集,建议使用COPY命令语句将数据先导入至OSS,再下载,详情请参见导出至本地文件