背景简介
腾讯云 数据传输服务(Data Transfer Service,DTS)是提供数据迁移、数据同步、数据订阅于一体的数据库数据传输服务,可帮助用户在业务不停服的前提下轻松完成数据库迁移上云,利用实时同步通道轻松构建高可用的数据库容灾架构,通过数据订阅来满足商业数据挖掘、业务异步解耦等场景需求。
DTS for Redis 目前支持数据迁移功能,可一次性将数据迁移到云上数据库,迁移过程中不停机,并且支持全量 + 增量数据的迁移,即迁移前源库的历史数据,和迁移过程中源库新增的写入数据都支持一起迁移。
适用场景
Redis > Redis
源端 | 目标端 | 场景说明 |
自建数据库 Redis IDC 自建 腾讯云 CVM 上自建 | 腾讯云 Redis | 云下数据库迁移上云。 |
其他第三方云厂商 Redis AWS ElasticCaChe for Redis Codis | 腾讯云 Redis | 其他云厂商的 Redis 数据库迁移到腾讯云数据库实例。 |
腾讯云 Redis | 腾讯云 Redis | 腾讯云 Redis 相同地域之间,或者不同地域之间的迁移 腾讯云 Redis 跨版本迁移 腾讯云 Redis 相同主账号下之间,或者不同主账号之间的迁移 腾讯云 Redis 标准架构与集群架构相互之间的迁移。 |
| 自建数据库 Redis IDC 自建 腾讯云 CVM 上自建 | 腾讯云数据库实例迁移到自建数据库。 |
从其他类型数据库 腾讯自研 istore | 腾讯云 Redis | - |
Redis > KeeWiDB
源端 | 目标端 | 说明 |
自建数据库 Redis IDC 自建 腾讯云 CVM 上自建 | 腾讯云 KeeWiDB | 云下数据库迁移上云。 |
其他第三方云厂商(all) Redis | 腾讯云 KeeWiDB | 其他云厂商的 Redis 数据库迁移到腾讯云数据库实例。 |
腾讯云 Redis | 腾讯云 KeeWiDB | 相同地域之间,或者不同地域之间的迁移 跨版本迁移 腾讯云相同主账号下之间,或者不同主账号之间的迁移 腾讯云标准架构迁移至集群架构,或集群架构迁移至标准架构。 |
迁移支持说明
说明:
支持版本
Redis > Redis 源数据库支持的版本包括 Redis 2.8、3.0、3.2、4.0、5.0、6.0、6.2、7.0。建议目标库版本大于或等于源库版本,否则会存在兼容性问题。
支持的集群架构包括:单节点架构、Redis Cluster 原生方案、Codis 集群方案、Twemproxy 集群方案 。
迁移权限要求:DTS 迁移数据需要源实例支持 SYNC 或者 PSYNC 命令。
迁移限制
1. 外网实例迁移时,需确保源实例服务在外网环境下可访问。
2. 进行迁移任务时,只允许迁移正常运行状态下的实例,未初始化密码或者有其他任务在执行中的实例,不能迁移。
3. 源库为 AWS ElasticCaChe for Redis 场景,需要 提交工单 申请,相应的约束限制如下:
3.1 仅支持迁移 ElasticCaChe for Redis 4.0、5.0、6.0、6.2版本,其他版本和其他 AWS Redis 产品暂时不支持。
3.2 暂不支持 TLS 连接,如果源库开启了 TLS,需要关闭后才能迁移。因为 AWS ElasticCaChe for Redis 关闭 TLS 后,Auth 用户认证功能也会同时关闭,可能会引发数据暴露风险,所以建议用户先创建安全组,再关闭 TLS,然后将 DTS 的服务 IP 添加到源库的安全组白名单中。
3.3 因 AWS ElasticCaChe for Redis 从节点不支持 PSYNC 命令,因此只能使用主节点进行迁移。
4. 不支持迁移模块(Modules)。
用户自查
如下检查需要用户在迁移前自行排查,否则可能会出现迁移失败。
检查源端是否存在大 Key
迁移之前,请检查源端数据库中是否存在大 Key。在迁移过程中,大 Key 可能引起缓冲区 client-output-buffer-limit 溢出,导致迁移失败。
腾讯云数据库,请使用数据库智能管家(TencentDB for DBbrain,DBbrain)的诊断优化功能快速分析大 Key。具体操作,请参见 内存分析。
非腾讯云数据库,请使用 rdbtools 分析 Redis 大 Key。具体操作,请参见 如何使用 rdbtools 分析 Redis 大 Key。
评估大 Key 进行拆分或清理,如果保留大 Key,请设置源端缓冲区的大小 client-output-buffer-limit 为无限大。
config set client-output-buffer-limit 'slave 0 0 0'
检查源端 Linux 内核 TCP 连接数的限制
如果业务并发请求比较大,迁移之前,请检查 Linux 内核对连接数的限制,如果业务请求连接数超出内核限制的连接数,Linux 服务器将会主动断开与 DTS 的连接。
echo "net.ipv4.tcp_max_syn_backlog=4096" >> /etc/sysctl.confecho "net.core.somaxconn=4096" >> /etc/sysctl.confecho "net.ipv4.tcp_abort_on_overflow=0" /etc/sysctl.confsysctl -p
检查源端 RDB 文件目录的访问权限
迁移之前,请务必检查源端存放 RDB 文件目录的访问权限是否为可读,否则将会因 RDB 文件不可读而引起迁移失败。
如果 RDB 文件所在目录不可读,请在源端执行如下命令,设置“无盘复制”,直接发送 RDB 文件给 DTS 落盘,而不需要保存在源端的磁盘再发送。
config set repl-diskless-sync yes
标准架构迁移到集群架构,请检查命令兼容性问题
标准架构迁移至内存版(集群架构)面临的最大问题为命令是否兼容内存版(集群架构)的使用规范。
多 Key 操作
腾讯云数据库 Redis 内存版(集群架构)仅支持 mget、mset、 del 、 exists 命令的跨 SLOT 多 Key 访问, 源端数据库可以通过 Hash Tag 的方式,将需要进行多 Key 运算的 Key 聚合至相同 SLOT,Hash Tag 的使用方式请参考 Redis Cluster 文档。
事务操作
内存版(集群架构)支持事务,但是事务中的命令不能跨 SLOT 访问 Key。
迁移步骤
步骤一:新建迁移任务
1. 登录 DTS 控制台,选择数据迁移页,然后在右侧单击新建迁移任务。
2. 在新建迁移任务页面,选择任务创建参数,然后单击立即购买。
配置参数 | 说明 |
服务类型 | 选择数据迁移。 |
创建模式 | 新建任务:新建一个全新的任务。 创建类似任务:快速创建一个和历史任务相同配置的任务,新的任务中数据库类型、接入方式、计费模式、迁移类型等默认填充的选项都和历史任务保持一致,用户如果需要也可根据情况进行修改。 |
计费模式 | 仅支持按量计费。 |
源实例类型 | 请根据您的源数据库类型选择,购买后不可修改。本场景选择 Redis。 |
源实例地域 | 选择源数据库所属地域。如果源库为自建数据库,选择离自建数据库最近的一个地域即可。 |
目标实例类型 | 请根据您的目标数据库类型选择,购买后不可修改。本场景选择 Redis。 |
目标实例地域 | 选择目标数据库所属地域。 |
版本 | 默认为 NewDTS,不需要修改。 |
规格 | 当前仅支持 Xlarge 规格。 |
标签 | 给迁移任务设置标签键与标签值,便于通过标签高效管理多个任务。 |
任务名 | 选择创建后命名,默认任务名称与任务 ID 一致。在迁移任务创建完成之后,可重新设置任务名称。 选择立即命名,在下面输入框,输入任务名称。 |
协议条款 | |
数量 | 单次最多支持购买10个迁移任务。 |
步骤二:设置源和目标数据库
1. 购买完成后,页面自动跳转到迁移任务列表,找到刚才创建的任务,单击操作列的配置。
![](https://qcloudimg.tencent-cloud.cn/image/document/260326427395782eda9a7487355c1b2d.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/260326427395782eda9a7487355c1b2d.png)
2. 进入设置源和目标数据库页签,填写源和目标数据库相关信息,然后单击测试连通性,测试通过后,单击保存进入下一步。
![](https://qcloudimg.tencent-cloud.cn/image/document/5e42cad6dd4b3c487241e1818c465159.png)
任务设置
配置参数 | 说明 |
任务名称 | 设置一个具有业务意义的名称,便于任务识别。 |
运行模式 | 立即执行:前置校验通过后会立即启动任务。 定时执行:设置一个任务开始执行的时间,前置校验通过后不启动任务,到设定的时间再启动。 |
自动重试 | 勾选后,迁移任务因网络异常等引起的任务中断,DTS 将在设置的时间范围内自动重试,不需要用户手动操作。
本重试机制为:从头开始进行数据迁移,重新迁移时,之前已迁移到目标端的数据会被清空,或者被覆盖。 |
源库设置
配置参数 | 说明 |
源库类型 | 购买时选择的源数据库类型,不可修改。 |
服务提供商 | 源库为 IDC 自建数据库、CVM 上的自建数据库、腾讯云数据库,请选择“普通”。 源库为阿里云、华为云等,请选择“普通”。 源库为 AWS,选择“AWS”,当前仅支持 AWS ElasticCache for Redis 4.0、5.0、6.0 版本,其他版本和其他 AWS 的 Redis 数据库暂不支持。 |
所属地域 | 购买时选择的源数据库地域,不可修改。 |
接入类型 | 1. 请根据您的场景选择,选择不同的接入类型,需要进行的网络打通操作不同,具体请参考 网络准备概述。 公网:源数据库可以通过公网 IP 访问。 云主机自建:源数据库部署在 腾讯云服务器 CVM 上。 专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。 VPN 接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。 云数据库:源数据库属于腾讯云数据库实例。 云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。 2. 源库为 IDC 自建数据库/其他云厂商数据库,接入方式可选择“公网/专线接入/VPN 接入/云联网”。源库为 CVM 上的自建数据库,接入方式选择“云主机自建”。源库为腾讯云数据库实例,接入方式选择“云数据库”。 |
节点类型 | 接入类型选择除“云数据库”之外的其他参数时显示该参数。请根据实际情况选择。 单节点迁移:指一主多副本的集群架构。 集群迁移:指由若干个分片,而每个分片上又存在若干个副本节点的集群架构。勾选集群迁移后,需要填写节点信息。 填写源库集群的所有分片节点地址和密码(IP:端口:密码 或 IP:端口),多个节点请换行处理。 建议填写的地址为源库的副本节点(从节点),从副本节点迁移可以避免影响源库的业务访问。 |
公网 | 接入类型选择“公网”时,需要配置如下参数。 主机地址:源数据库 IP 地址或域名。 端口:源数据库使用的端口。 密码:源数据库迁移账号的密码。 |
云主机自建 | 接入类型选择“云主机自建”时,需要配置如下参数。 云主机实例:云服务器 CVM 的实例 ID。 端口:源数据库使用的端口。 密码:源数据库迁移账号的密码。 |
专线接入 | 接入类型选择“专线接入”时,需要配置如下参数。 私有网络专线网关:专线接入时只支持私有网络专线网关,请确认网关关联网络类型。 私有网络:选择私有网络和子网。 主机地址:源数据库 IP 地址。 端口:源数据库使用的端口。 密码:源数据库迁移账号的密码。 |
VPN 接入 | 接入类型选择“VPN 接入”时,需要配置如下参数。 VPN 网关:VPN 网关,请选择打通源库网络所对应的 VPN 网关实例。 私有网络:选择私有网络和子网。 主机地址:源数据库 IP 地址。 端口:源数据库使用的端口。 密码:源数据库迁移账号的密码。 |
云数据库 | 接入类型选择“云数据库”时,需要配置如下参数。 是否跨账号 本账号:源数据库实例和目标数据库实例所属的主账号为同一个腾讯云账号。 跨账号:源数据库实例和目标数据库实例所属的主账号为不同的腾讯云账号。详细的跨账号操作指导请参见 云数据库跨账号实例间迁移。 云数据库实例:选择源数据库的实例 ID。 密码:源数据库迁移账号的密码。 |
云联网 | 接入类型选择“云联网”时,需要配置如下参数。 主机所在网络环境:请根据实际情况选择。例如源库为腾讯云数据库实例,选择“腾讯云”;源库为 IDC 自建数据库,选择“自建 IDC”;源库为其他云厂商数据库,则选择对应的网络。 主机地址:源数据库的主机 IP 地址。 端口:源数据库使用的端口。 密码:源数据库迁移账号的密码。 云联网实例所属账号 我的账号:云联网资源和 DTS 归属同一个腾讯云主账号。 其他账号:云联网资源和 DTS 归属不同的腾讯云主账号。 私有网络云联网:云联网实例名称。 接入 VPC:选择接入 VPC 及子网。接入 VPC 指的是云联网中接入 DTS 迁移链路的 VPC。请在云联网关联的所有 VPC 中,选择除了源数据库所属 VPC 外的其他 VPC。 接入 VPC 地域:购买任务时选择的源数据库地域与接入 VPC 地域需要保持一致,如果不一致,DTS 会将购买任务中选择的源数据库地域,改为接入 VPC 地域。 |
目标库设置
目标库参数设置与源库类似,如下仅对差异点进行描述。
配置参数 | 说明 |
接入类型 | 根据您的场景选择。 支持下云迁移,当源数据库接入类型选择“云数据库”时,目标库可选择“公网/云主机自建/专线接入/VPN 接入/云联网”。 |
节点类型 | 接入类型选择除“云数据库”之外的其他参数时显示该参数。 请根据目标库的实际情况选择,支持选择“单节点迁移”、“Redis Cluster 迁移”、“代理集群迁移”。 |
步骤三:设置迁移选项和选择迁移对象
在设置迁移选项及迁移对象页签,配置参数后,单击下一步。
![](https://qcloudimg.tencent-cloud.cn/image/document/2c83b0ae128ada1440dd36a3d8b57afb.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/fce9d3429eb82d07b83758194b217170.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/fce9d3429eb82d07b83758194b217170.png)
基础选项
配置项 | 说明 |
迁移类型 | 默认选择全量 + 增量迁移,不可修改。全量+增量迁移表示迁移前源库的历史数据,和迁移过程中源库新增的写入数据都一起迁移。 |
迁移对象 | 默认选择整个实例,不可修改。 |
目标库写入模式 | 清空目标实例:源库数据同步到目标库时,目标库已有的数据会被清空,然后重新写入。 覆盖写:源库数据同步到目标库时,用源库的 Key 来覆盖目标库的 Key。 |
启用目标库读写 | 允许 DTS 或者其他服务向目标库写入数据。在使用任务重试功能时,需要开启本参数。 |
过期 Key 自动淘汰 | 勾选后目标库上对过期的 Key 自动淘汰,可能会出现源库和目标库的数据结果不一致,请慎重操作。 |
高级选项
配置项 | 说明 |
限制数据传输速率 | 一般不需要设置,如果 DTS 的传输速率对目标库造成负载影响,可设置限速。 目标库分片数:目标库为腾讯云数据库实例时,自动获取实例分片数,不支持修改。 目标库单分片流量限制:填写单分片流量限制,设置范围为0-100MB/s。 如果目标实例为集群架构,则单实例每秒传输的最大流量=分片数*单分片流量限制(MB/s) |
步骤四:校验和启动任务
1. 在校验任务页面,系统自动进行前置校验,校验通过后,单击启动任务,会立即启动数据迁移(如果在配置任务时设置了定时执行时间,这里也可选择稍后启动,任务将在设置的时间点启动)。
说明:
校验结果为失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
校验结果为警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。
2. 返回数据迁移任务列表,任务进入准备运行状态,运行1分钟 - 2分钟后,数据迁移任务开始正式启动。
步骤五:结束任务
1. (可选)如果您需要进行查看任务、删除任务等操作,请单击对应的任务,在操作列进行操作,详情可参考 任务管理。
2. 当任务状态为“准备完成”,表示增量同步已完成,用户可以结束任务。在操作列单击完成,结束迁移任务。
建议在目标与源库的数据差距为0KB、目标与源库时间差距为0秒时,再结束任务。
如果您需要在迁移完成后对业务进行割接,请参考 割接说明。
![](https://qcloudimg.tencent-cloud.cn/image/document/fa5560da9b55ed0985da108314cb4b6e.png)