You need to enable JavaScript to run this app.
导航

使用 DTS 迁移华为云分布式缓存服务 DCS 单机或主备的实例数据至火山引擎

最近更新时间2024.03.14 14:39:30

首次发布时间2024.03.14 14:32:32

本文介绍如何通过火山引擎的数据库传输服务 DTS 将华为云的分布式缓存服务 DCS 单机或主备的实例数据迁移至火山引擎。

注意事项

  • 本文仅适用于迁移华为云实例类型为单机、主备的实例。

  • DTS 在执行全量数据迁移时将占用源端和目标端一定的资源,可能会导致数据库服务器负载上升。如果数据库业务量较大或服务器规格较低,可能会加重数据库的压力,甚至导致数据库服务不可用。建议在执行数据迁移前评估业务压力,在业务低峰期执行数据迁移。

  • 对于迁移失败的任务,DTS 会根据错误重试时间内自动恢复。当您需要将业务切换至目标实例时,请务必立即结束或释放该任务,避免该任务自动恢复后,导致源端数据覆盖目标端的数据。

  • 多 DB 迁移场景下,需注意源数据库与目标数据库间的 DB 映射关系,避免出现非预期的数据覆盖。

  • 华为云 DCS 的 Redis 4.0、Redis 5.0 和 Redis 6.0 版本不支持绑定弹性 IP,因此无法直接通过公网访问。

准备工作

数据库类型准备工作说明

源端

开启 psyncsync 命令

您需要在华为云的控制台内提交工单申请开启目标实例的 psyncsync 命令。

放开 0.0.0.0/0 网段

  1. 登录华为云的云服务器 ECS 控制台。

  2. 在顶部菜单栏,选择地域。

    说明

    地域需要和华为云待迁移目标实例的地域保持一致。

  3. 在左侧导航栏,单击安全组

  4. 安全组页面,单击创建安全组

  5. 创建安全组面板,配置以下参数信息:

    • 名称:自定义安全组名称。

    • 企业项目:建议和华为云待迁移目标实例的项目保持一致。

    • 模版:从下拉列表中选择开放全部端口

  6. 单击确定

创建云服务器

  1. 登录华为云的云服务器 ECS 控制台。

  2. 在顶部菜单栏,选择地域。

    说明

    地域需要和华为云待迁移目标实例的地域保持一致。

  3. 在左侧导航栏,单击弹性云服务器

  4. 弹性云服务器页面,创建云服务器,部分参数如下所示。

    • 可用区:建议和华为云待迁移目标实例的可用区保持一致。

    • 镜像:建议选择公共镜像 Centos,版本建议选择 Centos 7.9 64bit(40GiB)

  5. 单击下一步:网络配置

  6. 在网络配置配置向导页面,配置参数,部分参数如下所示:

    • 网络:从下拉列表中选择实例所在的私有网络,否则网络不通。

    • 安全组:安全组需选择开放 0.0.0.0/0 网段时创建的安全组。

    • 带宽大小:根据实际情况设置带宽大小。

  7. 单击下一步:高级配置

  8. 高级配置配置向导页面,配置参数。

  9. 单击下一步:确认配置

  10. 确认配置配置向导页面,配置参数,然后单击立即购买

说明

企业项目建议选择和实例在同一个项目下。

登录 ECS

  1. 成功创建云服务器后,获取公网 IP,确认是否能 ping 通 ECS 的公网 IP 地址。

  2. ping 通 ECS 的公网 IP 后,登录 ECS。

安装 CLI 工具

  1. 执行以下命令,安装 CLI:

    wget https://download.redis.io/releases/redis-6.0.9.tar.gz
    
  2. 执行以下命令,解压 CLI:

    tar xzf redis-6.0.9.tar.gz
    
  3. 执行以下命令,进入安装 CLI 的文件中:

    cd redis-6.0.9/src
    
  4. 执行以下命令,编译 CLI:

    make
    
  5. 执行以下命令,安装 CLI 依赖:

    make install
    

在 ECS 上安装并配置 Nginx

安装 Nginx

  1. 执行以下命令,添加 Nginx 到 yum 源。

    sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
  2. 执行以下命令,查看是否成功添加 Nginx。

    yum search nginx
    
  3. 执行以下命令,安装 Nginx。

    sudo yum install -y nginx
    
  4. 执行以下命令,安装 stream 模块。

    yum install nginx-mod-stream --skip-broken
    
  5. 执行以下命令,启动 Nginx。

    sudo systemctl start nginx.service
    
  6. 执行以下命令,设置 Nginx 为开机自动运行。

    sudo systemctl enable nginx.service
    
  7. 在本地浏览器中输入服务器地址(ECS 公网 IP 地址),查看是否安装成功。

    若显示为 Welcome to nginx! ,则表示成功安装 Nginx。

配置 Nginx

  1. 执行以下命令打开配置文件。

    cd /etc/nginx
    
  2. 执行以下命令,修改配置文件。

    vi nginx.conf
    

    在配置文件中增加以下内容,如果存在多个 Redis 实例需要公网连接,可以配置多个 server,使用 proxy_pass 为实例的连接地址。

    stream {
        server {
            listen 8081;// 监听端口
            proxy_pass redis-900ae****-a9e3-45ec-804d-17f2******.cn-north-1.dcs.myhuaweicloyd.com:6379;// Redis 实例的连接地址。
            proxy_socket_keepalive on;
            proxy_timeout 60m;
            proxy_connect_timeout 60s;
        }
    }
    
  3. 执行以下命令,重启 Nginx。

    service nginx restart
    
  4. 执行以下命令,查看是否成功启动。

    netstat -an
    

    若 8080 和 8081 两个端口都在监听状态,则表示成功启动 Nginx。

  5. 执行以下命令,验证是否成功连接 Redis 实例。

    redis-cli -h <ECS 的公网 IP> -p <监听端口号> -a <redis 实例密码>
    
  6. 执行以下命令,查看源端存在的 Key 的数量。

    info keyspace
    

修改源端实例安全组

  • 实例支持设置安全组:如果实例支持安全组,则安全组的入方向规则和出方向规则都需放开 0.0.0.0/0 网段。

  • 实例不支持设置安全组:

    • 如果没配置白名单,则表示所有机器都能访问实例。

    • 如果配置了白名单,则需要将 ECS 的私网 IP 和公网 IP 添加至白名单中。

目标端

  • 创建实例

  • 设置默认账号密码

创建缓存数据库 Redis 版数据库和设置默认账号密码。详细操作,请参见创建实例和设置默认账号密码

连接实例并查看源端的数据量

  1. 连接实例。详细操作,请参见通过私网连接实例

  2. 执行以下命令,查看目标端中 Key 的数量。

    info keyspace
    

操作步骤

具体的参数配置,请参见公网自建 Redis 迁移至火山引擎版 Redis

结果验证

执行以下命令,查看目标端中 Key 的数量,如果源端的数据按需求全部迁移至目标端,则迁移成功。

info keyspace