基本信息
腾讯云 数据传输服务(Data Transmission Service,DTS)集数据迁移、数据同步、数据订阅于一体,帮助用户在业务不停服的前提下轻松完成数据库迁移上云,利用实时同步通道轻松构建高可用的数据库容灾架构,通过数据订阅来满足商业数据挖掘、业务异步解耦等场景需求。
DTS for Redis 目前支持数据迁移功能,可一次性将数据迁移到云上数据库,迁移过程中不停机,并且支持全量 + 增量数据的迁移,即迁移前源库的历史数据,和迁移过程中源库新增的写入数据都支持一起迁移。
适用场景
适合通过 DTS 进行数据迁移的源端与目标端数据库形态如下表所示。
源端 | 目标端 | 说明 |
自建数据库 Redis(IDC 自建、腾讯云 CVM 上自建) | 腾讯云 Redis、腾讯云 KeeWiDB
| |
腾讯云 Redis | 自建数据库 Redis(IDC 自建、腾讯云 CVM 上自建) | - |
第三方云厂商 Redis | 腾讯云 Redis、腾讯云 KeeWiDB | |
腾讯云 Redis | 腾讯云 Redis、腾讯云 KeeWiDB | 腾讯云 Redis 实例之间迁移场景包括: 腾讯云 Redis 不同地域间迁移 腾讯云 Redis 同地域间迁移 腾讯云 Redis 跨版本迁移 跨腾讯云账号迁移 腾讯云标准架构迁移至集群架构,或集群架构迁移至标准架构。集群架构数据是分布式存储,与标准架构存在命令兼容性问题。迁移之前,请进行 标准架构迁移集群架构检查。 |
从其他类型数据库 | 腾讯云 Redis | Codis 迁移至腾讯云 Redis。 腾讯自研 istore 迁移至腾讯云 Redis。 AWS 迁移至腾讯云 Redis。 |
版本与架构说明
源端数据库支持的版本包括 Redis 2.8、3.0、3.2、4.0、5.0、6.2。建议目标库版本大于或等于源库版本,否则会存在兼容性问题。
支持的集群架构包括:单节点架构、Redis Cluster 原生方案、Codis 集群方案、Twemproxy 集群方案 。
源端实例支持 SYNC 或者 PSYNC 命令。
约束限制
源库中的数据库个数需要小于或等于目标库的数据库个数。
目标库的内存空间必须大于等于源库待迁移数据所占空间的1.5倍。
目标端支持开启覆盖写入模式,若不开启,则目标端数据库需为空。
只允许迁移实例状态为运行中的实例,未初始化密码或者有其他任务在执行中的实例,不能迁移。
源库必须为 Slave 节点,否则校验项会报警告。可根据主节点的业务情况消除告警。
注意:
DTS 不能做环形同步。环形同步数据,写入数据不会被终止,一直在环路上执行,将会导致写风暴。
DTS 不支持断点续传,因为没有 Binlog 文件,增量都同步在连接的内存中,一旦断掉,增量就从内存中丢失,因此任务一旦发起,不支持暂停。
迁移前准备
确认源端与目标端数据库实例状态是否正常。
确认源端网络环境接入类型是否互通。
公网:源数据库可以通过公网 IP 访问。
云主机自建:源数据库部署在 腾讯云服务器 CVM 上。
专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。
VPN 接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。
云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。
确认内存空间:目标库的空间必须大于等于源库待迁移数据所占空间的1.5倍。
确认数据库个数:源库中的数据库个数需要小于或等于目标库的数据库个数。
目标端支持覆盖写入模式,需在迁移任务配置中进行开启,如果不开启,请排查目标端数据库是否为空。
说明
检查源端是否存在大 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
标准架构迁移到集群架构,请检查命令兼容性问题。具体操作,请参见 标准架构迁移集群架构检查 进行静态评估与动态评估。
迁移步骤
步骤一:新建迁移任务
1. 登录 DTS 控制台,进入数据迁移页面,单击新建迁移任务。
2. 在数据传输服务页面,根据下表配置项说明创建迁移任务,单击立即购买。
配置项 | 说明 |
服务类型 | 选择数据迁移。 |
创建模式 | 选择创建任务模式,支持以下两种方式。 新建任务:创建一个全新的任务。 创建类似任务:基于已存在的一个迁移任务,创建其类似任务,方便快速。 |
任务 ID | 创建模式选择创建类似任务时,需配置该参数。 在下拉表中,选择类似的迁移任务 ID。 配置该参数后,下方的配置项将按照已选择的任务 ID 中的配置进行更新。 |
计费模式 | 仅支持按量计费。 |
源实例类型 | 请根据您的源数据库类型选择,购买后不可修改。此处选择 Redis。 |
源实例地域 | 选择源数据库所属地域。如果源库为自建数据库,选择离自建数据库最近的一个地域即可。 |
目标实例类型 | 请根据您的目标数据库类型选择,购买后不可修改。此处选择 Redis。 |
目标实例地域 | 选择目标数据库所属地域。 |
规格 | 当前仅支持 Xlarge。 |
标签 | 给迁移任务设置标签键与标签值,便于通过标签高效管理任务。 |
任务名 | 创建后命名:创建任务之后,再设置任务名称。 立即命名:在下方输入框给迁移任务设置名称。 不支持除 - 之外的任意特殊符号。 支持小写字母、大写字母、汉字及数字。 长度限制请以控制台为准。 建议设置便于识别业务的名称。 |
协议条款 | |
数量 | 创建任务的数量,取值范围[1,10]。 |
链路配置费用 | 当前免费。 |
3. 返回数据迁移任务页面,在迁移任务列表,可查看任务状态及进度,等待任务创建完成。
步骤二:配置迁移任务
1. 在数据迁移列表中,找到已创建的迁移任务。
2. 在其操作列,单击配置。
3. 在修改迁移任务配置向导的设置源和目标数据库页签,根据下表说明配置源库网络接入类型、主机地址、端口以及目标库的实例信息,并测试连通性,单击保存,如下图所示。
配置类别 | 配置项 | 说明 |
任务设置 | 任务名称 | 新建迁移任务时已设置任务名称,此配置项便默认为已创建的名称。 新建任务时,未配置任务名称,请在输入框设置便于识别的任务名称。 不支持除 - 之外的任意特殊符号。 支持小写字母、大写字母、汉字及数字。 长度限制请以控制台为准。 |
| 运行模式 | 选择任务运行模式,支持选择立即执行与定时执行。 立即执行:配置完迁移任务之后,立即运行。 定时执行:可设置具体的执行时间,将在设定的执行时间开始运行。建议选择此种方式。 配置迁移任务之后,支持在执行时间之前修改定时执行时间。 迁移任务设置定时执行时间之后,而又需在定时时间之前立即运行任务,可在迁移任务列表操作列,单击立即启动。 |
源库设置 | 源库类型 | 购买时选择的源数据库类型,不可修改。 |
| 服务提供商 | 普通:源库为 IDC 自建数据库、CVM 上的自建数据库、腾讯云数据库、华为云、阿里云等,请选择“普通”。 AWS:源库为 AWS,选择“AWS”。 |
| 数据库版本 | 当服务提供商选择 AWS 时,需指定 AWS 的版本。当前仅支持 ElastiCache for Redis 4.0、5.0、6.0 版本,其他版本和其他 AWS 的 Redis 数据库暂不支持。 |
| 所属地域 | 购买时选择的地域,不可修改。 |
| 接入类型 | 选择源库接入的网络类型。对于第三方云厂商数据库,一般可以选择公网方式,也可以选择 VPN 接入、专线或者云联网的方式,请根据实际的网络情况选择。 公网:源数据库可以通过公网 IP 访问。 云主机自建:源数据库部署在 腾讯云服务器 CVM 上。 专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。 VPN接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。 云数据库:源数据库属于腾讯云数据库实例。 云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。 |
| 节点类型 | 选择源库集群部署类型,支持选择单节点迁移与集群迁移。 单节点迁移:指一主多副本的集群架构。 集群迁移:指由若干个分片,而每个分片上又存在若干个副本节点的集群架构。 |
| 主机地址 | 节点类型选择单节点迁移时,显示该参数。请在输入框填写源库的主机副本节点的 IP 地址。 |
| 端口 | 节点类型选择单节点迁移时,显示该参数。请在输入框填写源库的端口。 |
| PSYNC 名称 | PSYNC 命令前缀,需从 AWS 申请。 |
| 密码 | 节点类型选择单节点迁移时,显示该参数。请在输入框填写源库访问密码。 |
| 节点信息 | 节点类型选择集群迁移时,显示该参数。 填写源库集群的所有分片节点地址和密码(IP:端口:密码 或 IP:端口),多个节点请换行处理。 建议从源库的副本节点(从节点)进行数据迁移,避免影响源库的业务访问。 |
目标库设置 | 目标库类型 | 购买时选择的目标库类型,不可修改。固定为 Redis。 |
| 所属地域 | 购买时选择的目标库地域,不可修改。 |
| 接入类型 | 选择目标端数据库接入的网络类型。 |
| 节点类型 | 选择目标端数据库集群部署类型。 单节点迁移:指一主多副本的标准架构。 Redis Cluster 迁移:指原生 Redis Cluster 架构方案,不支持有代理(Proxy)架构。 代理集群迁移:具备代理(Proxy)的集群架构,如 Codis 集群方案,Twemproxy 集群方案。 |
| 主机地址 | 节点类型选择单节点迁移时,显示该参数。请在输入框填写目标库的主机节点的 IP 地址。 |
| 端口 | 节点类型选择单节点迁移时,显示该参数。请在输入框填写目标库的端口。 |
| 密码 | 节点类型选择单节点迁移时,显示该参数。请在输入框填写目标库访问密码。 |
| 节点信息 | 节点类型选择Redis Cluster 迁移或者代理集群迁移时,显示该参数。 填写目标库集群的所有分片节点地址和密码(IP:端口:密码 或 IP:端口),多个节点请换行处理。 |
4. 在设置迁移选项及迁移对象页签,确认迁移类型为全量 + 增量迁移,迁移对象为整个实例,可根据需要判断是否启用覆盖写入模式,单击保存。
说明:
覆盖写入模式,指在目标端数据库写入数据时,直接覆盖原有数据,并不清空数据库,从文件开头进行写入。
5. 在校验任务页签,将自动进行任务校验。校验项目包含:网络、实例访问密码、实例容量、目标实例只读等信息。
校验结果为失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
校验结果为警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。
6. 校验任务全部通过后,单击启动任务或稍后启动。
启动任务:立即启动迁移任务,即使设置了定时执行时间,也不等待,立即启动数据迁移。
稍后启动:配置任务时,设置了定时执行时间,可选择稍后启动,任务将在执行时间点启动。
7. 返回数据迁移任务列表,任务进入准备运行状态,运行1分钟 - 2分钟后,数据迁移任务开始正式启动。
步骤三:查看并管理数据迁移任务
在迁移任务列表,可查看迁移任务进度,等待迁移任务状态变为任务成功时,在目标数据库上验证数据,如果验证无误,确定割接时间,将业务系统指向目标数据库。
当源库和目标库的 Key 同步一致时,在操作列单击完成,结束数据迁移任务。
管理迁移任务:在任务列表的操作列,可对任务进行重试、终止、暂停等操作,具体信息,请参见 任务管理。
事件告警和指标监控
DTS 支持迁移中断自动上报事件告警,以便及时了解到迁移任务的异常,详细步骤请参见 配置数据迁移告警。
DTS 支持查看迁移过程中的各项指标监控, 以便了解系统的各项指标性能,请参见 查看监控指标。
常见问题
DTS迁移过程中,常见错误提示信息及处理方法,请参见 使用 DTS 迁移常见错误提示信息。
DTS迁移过程中,常见问题,请参见 使用 DTS 迁移常见咨询问题。