
# 阿里云数据库Redis/Tair到GeminiDB Redis的迁移
本章节主要介绍阿里云数据库Redis/Tair到GeminiDB Redis的迁移方案。
#### 迁移原理
- 使用阿里云的数据迁移工具DTS中的数据迁移功能，该功能支持将阿里云Redis服务的数据迁移至其他Redis服务中，利用该工具避开阿里云 Redis服务屏蔽sync和psync命令限制，实现数据从阿里云Redis服务迁移至华为云GeminiDB Redis中。
 
#### 使用须知
- 阿里云侧源端需与华为侧目标端网络互通，需要开通专线或绑定公网IP。
- 阿里云DTS数据迁移功能实时收费，使用前请确保阿里云账户余额充足。
- 华为云GeminiDB Redis容量不得小于阿里云数据库Redis的内存容量。
- 注意放开源端和目标端安全组配置。
- 阿里侧部分Redis比较特殊，例如Tair混合存储型，无法实现在线全量加增量迁移，需要使用全量扫描方式来迁出，请参考[开源Redis全量扫描迁移到GeminiDB Redis](https://support.huaweicloud.com/redisug-nosql/nosql_redis_migration.html#nosql_redis_migration__section869911231992)。
 
#### 准备工作
- 通过公网IP迁移
  - 提前购买华为侧弹性公网IP，带宽需要大于源库流量。
  
  - 将弹性公网IP绑定到华为云GeminiDB Redis其中一个节点上。
  
  - 配置DTS时选择目标库接入方式为公网IP。
   
- 通过专线迁移
  - 提前购买阿里侧ECS，确保能连通到华为云GeminiDB Redis。
  
  - 配置数据转发，将本地端口接收的流量转发到目标端，实现从阿里云Redis迁移至GeminiDB Redis。 **ssh -g -L (** **转发端口** **):(** **华为侧** **Redis** **负载均衡** **IP):(** **华为侧** **Redis** **端口** **) -N -f root@** **(本地** **ECS IP)**
    
  
  - 配置DTS时选择目标库接入方式为ECS自建数据库。
   
 
#### 操作步骤
#### 步骤1：购买DTS数据同步功能
1. 源端选择阿里云侧 Redis服务，如果使用弹性公网IP迁移，目标端选择公网IP，主机名称填写弹性公网IP；如果使用专线迁移，目标端选择ECS自建Redis，主机名称填写ECS 对应IP，端口号填写转发端口号，并输入数据库密码，单击测试链接，若测试无异常跳转至下一页面，否则检查整条链路是否正常，白名单配置是否正确。 
   图1源端和目标端配置   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001892090121.png "点击放大")
   
   
   
   
2. 根据需要选择迁移类型（全量迁移或全量迁移+增量迁移）。选择预检查并报错拦截，选择所需要迁移的DB。 
   ![](https://support.huaweicloud.com/redisug-nosql/public_sys-resources/caution_3.0-zh-cn.png)
   若客户使用多DB功能，需要勾选需要迁移的DB。若没有使用多DB功能，则只选择DB0。
   图2待迁移DB   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001846136816.png "点击放大")
   
   图3根据需要设置告警及重试时间等参数，根据需要设置校验配置   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001846295940.png "点击放大")
   
   
   
3. 待预检查完成后，单击"下一步购买"。 
   图4预检查   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001892337853.png "点击放大")
   
   
   
4. 选择迁移时的带宽，单击"购买并启动"。 
   图5带宽配置   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001846138848.png "点击放大")
   
   
   
5. 使用全量迁移+增量迁移时，迁移任务不会自动结束。当观察到无延迟（延迟0毫秒），则全量同步已完成。 
   图6任务状态   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001892517817.png "点击放大")
   
   
   
 
#### 步骤2：停止DTS数据同步服务
1. 待Redis业务割接后，结束数据同步任务。 
   图7结束数据迁移任务   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001846161200.png "点击放大")
   
   
   
 
#### 步骤3：迁移后Redis数据一致性校验
迁移完成后，您可以对Redis数据做一致性校验。
![](https://support.huaweicloud.com/redisug-nosql/public_sys-resources/note_3.0-zh-cn.png)
- Redis迁移已完成或者已经进入增量状态。
- 需要ECS实例部署Redis-Full-Check开源工具，并确保与源端、目标端网络互通。
- 如果迁移任务处于增量状态，由于迁移源端和目标端间存在网络时延，无法确保校验时数据一致，如有条件，建议停止对源端的写入后再做校验。
- 业务使用Redis时往往存在给key设置过期时间，迁移时key过期行为会影响数据一致性，如果检验结果不一致，可能是由于key过期时间不一致导致。

- 云厂商DTS在迁移过程中会往目标端Redis写入临时探活key，校验时可能发现非业务数据，属于正常现象。
 
**操作步骤**：
1. 登录ECS实例，确保能连上源端和目标端Redis。
2. 部署[redis-full-check](https://github.com/alibaba/RedisFullCheck/releases?spm=a2c4g.11186623.0.0.7f6e5e58EyObOU)工具。
3. 执行以下命令进行数据校验。 
   /redis-full-check -s {源端IP}:{源端端口} -p {源端密码} -t {目标端IP}:{目标端端口} -a {目标端密码} -m 1
   表1参数说明 
   | 参数 | 参数                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 参数示例             |
   |:---|:---|:---|
   | -s | 源端Redis连接地址和端口。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | -s 10.0.0.1:6379 |
   | -p | 源端Redis密码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -                |
   | -t | 目标端Redis连接地址和端口。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | -t 10.0.0.2:6379 |
   | -a | 目标端Redis密码。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | -                |
   | -m | 校验模式： 1. 全量校验所有键值对。  2. 仅校验值的长度。  3. 仅校验key完整性。  4. 全量校验所有键值，但只校验大key的长度。   默认为模式2。 | -m 1             |
   | -q | 最大qps限制，默认15000。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                | -q 5000          |
   | -d | 校验结果保存的文件名称，默认result.db。                                                                                                                                                                                                                                                                                                                                                                                                                                                                        | -d result.db     |
      
   
   
4. 查看校验结果文件。 
   校验默认执行三轮，输出三个校验结果文件，一般只需要看最后一个校验结果文件。
   - 执行sqlite3 result.db.3。
   
   - 执行select \* from key。
   
   - 查看是否存在异常的key。 ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000002118847662.png)
     
   
   
   
   
 
