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,再下载,详情请参见导出至本地文件。
文档内容是否对您有帮助?