tencent cloud

文档反馈

Redis 迁移至 Redis

最后更新时间:2023-03-23 10:43:01

    背景简介

    腾讯云 数据传输服务(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 访问。
    云主机自建:源数据库部署在 腾讯云服务器 CVM 上。
    专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。
    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 访问。
    云主机自建:源数据库部署在 腾讯云服务器 CVM 上。
    专线接入:源数据库可以通过 专线接入 方式与腾讯云私有网络打通。
    VPN接入:源数据库可以通过 VPN 连接 方式与腾讯云私有网络打通。
    云数据库:源数据库属于腾讯云数据库实例。
    云联网:源数据库可以通过 云联网 与腾讯云私有网络打通。
    节点类型
    支持单节点迁移和集群版迁移。此处以“集群迁移”为例进行介绍。目前 Redis 集群版迁移到集群版时,对分片数量和副本数量没有限制。
    节点信息
    填写源库集群的所有分片节点地址和密码(IP:端口:密码 或 IP:端口),多个节点请换行处理。强烈建议从源库的副本节点(从节点)进行数据迁移,避免影响源库的业务访问。
    目标库设置
    目标库类型
    购买时选择的目标库类型,不可修改。
    所属地域
    购买时选择的目标库地域,不可修改。
    接入类型
    根据您的场景选择,本场景选择“云数据库”。
    数据库实例
    选择目标库的实例 ID。
    密码
    目标库密码。

    3. 校验和启动任务

    在校验任务页面,进行校验,校验任务通过后,单击启动任务
    校验结果为失败:表示校验项检查未通过,任务阻断,需要修复问题后重新执行校验任务。
    校验结果为警告:表示检验项检查不完全符合要求,可以继续任务,但对业务有一定的影响,用户需要根据提示自行评估是忽略警告项还是修复问题再继续。
    返回数据迁移任务列表,任务进入准备运行状态,运行1分钟 - 2分钟后,数据迁移任务开始正式启动。启动后会进行全量 + 增量数据的迁移,即迁移前源库的历史数据,和迁移过程中源库新增的写入数据都一起迁移。

    4. 完成迁移任务

    1)(可选)如果您需要进行查看任务、删除任务等操作,请单击对应的任务,在操作列进行操作,详情可参考 任务管理。 2)当源库和目标库的 key 同步一致时,在操作列单击完成,结束数据迁移任务。 3)当迁移任务状态变为任务成功时,请先在目标数据库上验证数据,如果验证无误,即可对业务进行正式割接,更多详情可参考 割接说明

    事件告警和指标监控

    1)DTS 支持迁移中断自动上报事件告警,以便及时了解到迁移任务的异常,详细步骤请参考 配置数据迁移告警。 2)DTS 支持查看迁移过程中的各项指标监控, 以便了解系统的各项指标性能,请参考 查看监控指标
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持