这里说的Table迁移是指将某个Pegasus集群的一个表的数据迁移到另一个Pegasus集群中。
目前提供了两种办法:使用Shell工具的copy_data命令;通过冷备份恢复。
Shell工具的copy_data命令的原理:通过scan接口从源集群的表中逐条读入数据,然后通过set接口将数据逐条写入到目标集群的表中。如果set的数据在目标集群的表中已经存在,会直接覆盖。
copy_data命令:
copy_data <-c|--target_cluster_name str> <-a|--target_app_name str> [-s|--max_split_count num] [-b|--max_batch_count num] [-t|--timeout_ms num]
假设源集群为ClusterA,目标集群为ClusterB,需要迁移的表为TableA。迁移步骤如下:
-c
参数指定目标集群,所以需要配置目标集群的MetaServer地址列表。在执行Shell所在文件夹,修改配置文件src/shell/config.ini,在文件最后添加如下几行(将ClusterB替换为你自己的集群名):[pegasus.clusters] ClusterB = {ClusterB的MetaServer地址}
>>> use TableA >>> copy_data -c ClusterB -a TableB -t 10000
所谓冷备份迁移,就是利用Pegasus的冷备份功能,先将数据备份到HDFS或者其他介质上,然后恢复到新的表中。
冷备份迁移的好处: