
# 腾讯云Redis到GeminiDB Redis的迁移
本章主要介绍腾讯云Redis到GeminiDB Redis的迁移方案。
#### 迁移原理
- 使用腾讯云的数据迁移工具DTS中的数据同步功能，该功能支持将腾讯云 Redis服务的数据迁移至ECS自建Redis中，利用该工具避开腾讯云 Redis服务屏蔽分片实际IP，实现数据从腾讯云 Redis服务迁移至华为云GeminiDB Redis中。
 
#### 使用须知
- 腾讯云侧源端需与华为侧目标端网络互通，需要开通专线或绑定公网IP。
- 腾讯云DTS数据同步功能实时收费，使用前请确保腾讯云账户余额充足。
- 华为云GeminiDB Redis容量不得小于腾讯云数据库Redis的内存容量。
- 注意放开源端和目标端安全组正确配置。
- 腾讯云不支持公网迁出，需要通过ECS做一层转发到华为云。
- 腾讯侧部分Redis比较特殊，无法实现在线全量加增量迁移，需要使用全量扫描方式来迁出，请参考[开源Redis全量扫描迁移到GeminiDB Redis](https://support.huaweicloud.com/redisug-nosql/nosql_redis_migration.html#nosql_redis_migration__section869911231992)。
 
#### 准备工作
腾讯云不支持公网迁出，需要通过ECS做数据转发实现迁移功能。
- 通过专线迁移
  - 需要在腾讯侧购买一台ECS，确保能连接到华为云GeminiDB Redis。
  
  - 配置数据转发，将本地端口接收的流量转发到目标端，实现从腾讯云Redis迁移至GeminiDB Redis。 **ssh -g -L (** **转发端口** **):(** **华为侧** **Redis** **负载均衡** **IP):(** **华为侧** **Redis** **端口** **) -N -f root@** **(本地** **ECS IP)**
    
   

- 通过弹性公网IP迁移
  - 需要在腾讯侧购买一台ECS，购买并绑定腾讯侧弹性公网IP。
  
  - 提前购买华为侧弹性公网IP，确保带宽大于源库流量，并绑定在GeminiDB Redis其中一个节点上。
  
  - 配置数据转发，将本地端口接收的流量转发到目标端，实现从腾讯云Redis迁移至GeminiDB Redis。 **ssh -g -L (** **转发端口** **):(** **华为侧** **弹性公网** **IP):(** **华为侧** **Redis** **端口** **) -N -f root@** **(本地** **ECS IP)**
    
   
 
#### 操作步骤
#### 步骤1：购买DTS数据迁移功能
1. 选择源端以及目标端的region，选择迁移方式为下云。 
   图1DTS配置   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001564041893.png "点击放大")
   
   
2. 源端选择腾讯云侧 Redis服务，目标端选择ECS自建Redis，并输入数据库密码，单击测试链接，若测试无异常跳转至下一页面，否则检查整条链路是否正常，白名单配置是否正确。 
   图2DTS任务列表   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001563921609.png "点击放大")
   图3DTS实例信息配置   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001512722488.png "点击放大")
   
   
3. 待校验完成后，单击"下一步"。 
   图4DTS预校验   
   ![](https://support.huaweicloud.com/redisug-nosql/zh-cn_image_0000001564201993.png "点击放大")
   
   
 
#### 步骤2：停止DTS数据迁移服务
- 待Redis业务割接后，完成数据迁移任务。
- 若没有数据同步需求时，需要 DTS迁移任务（该功能会实时收费）。
 
#### 步骤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)
     
   
   
   
   
 
