背景简介
腾讯云 数据传输服务(Data Transmission Service,DTS)是提供数据迁移、数据同步、数据订阅于一体的数据库数据传输服务,可帮助用户在业务不停服的前提下轻松完成数据库迁移上云,利用实时同步通道轻松构建高可用的数据库容灾架构,通过数据订阅来满足商业数据挖掘、业务异步解耦等场景需求。 DTS for Redis 目前支持数据迁移功能,可一次性将数据迁移到云上数据库,迁移过程中不停机,并且支持全量 + 增量数据的迁移,即迁移前源库的历史数据,和迁移过程中源库新增的写入数据都支持一起迁移。
适用场景
DTS 支持 Redis 数据迁移的源端和目标端部署形态如下:
说明:
如果用户需要体验 NewDTS 版的 Redis > Redis/KeeWiDB 迁移功能,请先 提交工单 进行申请。 |
自建数据库 Redis(IDC 自建、腾讯云 CVM 上自建) | 腾讯云 Redis、腾讯云 KeeWiDB
| - |
第三方云厂商 Redis | 腾讯云 Redis、腾讯云 KeeWiDB | 前提条件是云厂商需要提供 SYNC 或者 PSYNC 命令权限 |
腾讯云 Redis | 腾讯云 Redis、腾讯云 KeeWiDB | 支持相同腾讯云账号下数据库实例之间的数据迁移,如版本升级、跨地域迁移等。 |
迁移支持说明
支持版本
Redis > Redis 源数据库支持的版本包括 Redis 2.8、3.0、3.2、4.0、5.0、6.0,其中6.0版本如需体验请 提交工单 进行申请。建议目标库版本大于或等于源库版本,否则会存在兼容性问题。 Redis > KeeWiDB 源数据库支持 Redis 4.0 版本,如果迁移4.0以外的其他版本,需要提交工单 进行申请。 标准架构和集群架构支持相互迁移,但异构迁移(如集群架构 > 标准架构)可能会存在兼容性问题。
支持的架构包括单节点、redis cluster、codis、twemproxy。
迁移权限要求:DTS 迁移数据需要源实例支持 SYNC 或者 PSYNC 命令。
支持网络
DTS 迁移服务支持常见的网络迁移,包括公网、CVM 自建、专线接入、VPN 接入、云联网场景下的数据迁移。
公网:源数据库可以通过公网 IP 访问。
专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。 VPN 接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。 云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。 迁移限制
为保障迁移效率,CVM 自建实例迁移不支持跨地域迁移。
外网实例迁移时,需确保源实例服务在外网环境下可访问。
进行迁移任务时,只允许迁移正常运行状态下的实例,未初始化密码或者有其他任务在执行中的实例,不能迁移。
目标实例必须是没有数据的空实例,迁移过程中,目标实例会被设置为只读,不能对实例进行写入操作。
迁移成功时,由业务侧验证数据后,可断开源实例连接,将连接切换到目标实例。本文为您介绍使用数据传输服务 DTS 将 Redis 迁移至腾讯云数据库 Redis 的过程。
环境要求
系统检查
说明
DTS 系统会在启动迁移任务前进行如下校验,不符合要求的系统会报错提示,用户也可提前进行自查,报错后的处理方法请参考 Redis 校验项。 |
源库要求 | 源库和目标库网络能够连通。 源库中的数据库个数需要小于或等于目标库的数据库个数。 Redis > Redis 迁移,Redis 源实例版本需要大于等于2.2.6,2.2.6以下版本不支持 DTS 迁移。Redis > KeeWiDB 迁移,Redis 源库支持 Redis 4.0 版本,如果迁移4.0以外的其他版本,需要 提交工单 进行申请。 源库必须为 Slave 节点,否则校验项会报警告。 |
目标库要求 | 建议目标库的版本大于或等于源实例的版本,否则校验时会报警告,提示兼容性问题。 目标库的 Proxy 版本为最新版本。 Redis > Redis 迁移,目标库的空间必须大于等于源库待迁移数据所占空间的1.5倍。Redis > KeeWiDB 迁移,目标库的空间必须大于等于源库待迁移数据所占空间的2倍。 目标库必须为空。 |
如下检查需要用户在迁移前自行排查,否则可能会出现迁移失败。
检查源端是否存在大 Key
迁移之前,请检查源端数据库中是否存在大 Key。在迁移过程中,大 Key 可能引起缓冲区 client-output-buffer-limit 溢出,导致迁移失败。
腾讯云数据库,请使用数据库智能管家(TencentDB for DBbrain,DBbrain)的诊断优化功能快速分析大 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.conf
echo "net.core.somaxconn=4096" >> /etc/sysctl.conf
echo "net.ipv4.tcp_abort_on_overflow=0" /etc/sysctl.conf
sysctl -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. 新建迁移任务
1)登录 DTS 控制台,选择数据迁移页,然后在右侧单击新建迁移任务。
2)在新建迁移任务页面,选择源数据库和目标数据库的类型、地域等信息,然后单击立即购买。 |
计费模式 | 仅支持按量计费。 |
源实例类型 | 请根据您的源数据库类型选择,购买后不可修改。此处选择 Redis。 |
源实例地域 | 选择源数据库所属地域。如果源库为自建数据库,选择离自建数据库最近的一个地域即可。 |
目标实例类型 | 请根据您的目标数据库类型选择,购买后不可修改。此处选择 Redis。 |
目标实例地域 | 选择目标数据库所属地域。 |
迁移方式 | 选择上云。 |
规格 | 当前仅支持Xlarge。 |
数量 | 单次最多支持购买10个迁移任务。 |
2. 设置源和目标数据库
填写源库设置和目标库设置,单击连通性测试,测试通过后,单击保存进入下一步。
|
任务设置 | 任务名称 | 设置一个具有业务意义的名称,便于任务识别。 |
| 运行模式 | 可以设置立即执行任务或者定时执行。 修改定时任务,校验通过后,需要重新单击定时启动,任务才会定时启动。 如果任务过了定时启动的时间,定时启动会变为立即启动,单击立即启动,会立刻启动任务。 |
源库设置 | 源库类型 | 购买时选择的源数据库类型,不可修改。 |
| 所属地域 | 购买时选择的地域,不可修改。 |
| 接入类型 | 对于第三方云厂商数据库,一般可以选择公网方式,也可以选择 VPN 接入,专线或者云联网的方式,需要根据实际的网络情况选择。 本场景选择“公网”,不同接入类型的准备工作请参考 准备工作概述。 公网:源数据库可以通过公网 IP 访问。 专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。 VPN接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。 云数据库:源数据库属于腾讯云数据库实例。 云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。 |
| 节点类型 | 支持单节点迁移和集群版迁移。此处以“集群迁移”为例进行介绍。目前 Redis 集群版迁移到集群版时,对分片数量和副本数量没有限制。 |
| 节点信息 | 填写源库集群的所有分片节点地址和密码(IP:端口:密码 或 IP:端口),多个节点请换行处理。强烈建议从源库的副本节点(从节点)进行数据迁移,避免影响源库的业务访问。 |
目标库设置 | 目标库类型 | 购买时选择的目标库类型,不可修改。 |
| 所属地域 | 购买时选择的目标库地域,不可修改。 |
| 接入类型 | 根据您的场景选择,本场景选择“云数据库”。 |
| 数据库实例 | 选择目标库的实例 ID。 |
| 密码 | 目标库密码。 |
3. 校验和启动任务
在校验任务页面,进行校验,校验任务通过后,单击启动任务。
校验结果为失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
校验结果为警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。
返回数据迁移任务列表,任务进入准备运行状态,运行1分钟 - 2分钟后,数据迁移任务开始正式启动。启动后会进行全量 + 增量数据的迁移,即迁移前源库的历史数据,和迁移过程中源库新增的写入数据都一起迁移。
4. 完成迁移任务
1)(可选)如果您需要进行查看任务、删除任务等操作,请单击对应的任务,在操作列进行操作,详情可参考 任务管理。
2)当源库和目标库的 key 同步一致时,在操作列单击完成,结束数据迁移任务。
3)当迁移任务状态变为任务成功时,请先在目标数据库上验证数据,如果验证无误,即可对业务进行正式割接,更多详情可参考 割接说明。
事件告警和指标监控
1)DTS 支持迁移中断自动上报事件告警,以便及时了解到迁移任务的异常,详细步骤请参考 配置数据迁移告警。
2)DTS 支持查看迁移过程中的各项指标监控, 以便了解系统的各项指标性能,请参考 查看监控指标。
本页内容是否解决了您的问题?