文档首页/ 分布式缓存服务 DCS/ 用户指南/ 迁移实例数据/ 自建Redis迁移至DCS/ 使用Redis-cli离线迁移自建Redis(AOF文件)
更新时间:2024-12-16 GMT+08:00

使用Redis-cli离线迁移自建Redis(AOF文件)

Redis-cli是Redis自带的一个命令行工具,安装Redis后即可直接使用Redis-cli工具。本文档主要介绍如何使用Redis-cli将自建Redis迁移到DCS缓存实例。

AOF文件的生成较快,适用于可以进入Redis服务器并修改配置的场景,如用户自建的Redis服务。

  • 建议选择业务量较少的时间段进行迁移。
  • 正式进行迁移操作前,建议先暂停业务,确保不会在迁移过程中丢失新产生的数据变动。

约束与限制

开启了SSL的目标实例不支持数据迁移,需要关闭目标实例SSL后再进行迁移,开启或关闭SSL的操作请参考配置Redis SSL数据加密传输

前提条件

  • 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例
  • 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。
  • 已创建弹性云服务器ECS,创建弹性云服务器的方法,请参见创建弹性云服务器

生成AOF文件

  1. 登录弹性云服务器。
  2. 安装Redis-cli客户端。该操作以客户端安装在Linux系统上为例进行说明。
    1. 执行如下命令下载Redis。您也可以安装其他Redis版本。具体操作,请参见Redis官网
      wget http://download.redis.io/releases/redis-5.0.8.tar.gz
    2. 执行如下命令,解压Redis客户端源码包。
      tar -xzf redis-5.0.8.tar.gz
    3. 进入Redis目录并编译Redis客户端源码。
      cd redis-5.0.8
      make
      cd src
  3. 执行如下命令开启缓存持久化,得到AOF持久化文件。
    redis-cli -h {source_redis_address} -p {port} -a {password}  config set appendonly yes

    {source_redis_address}为源Redis的连接地址,{port}为源Redis的端口,{password}为源Redis的连接密码。

    开启持久化之后,如果AOF文件大小不再变化,说明AOF文件为全量缓存数据。

    • 使用redis-cli登录Redis实例,输入命令“config get dir”可以查找生成的AOF文件保存路径,文件名如果没有特殊指定,默认为:appendonly.aof。
    • 生成AOF文件后如需关闭同步,可使用redis-cli登录redis实例,输入命令“config set appendonly no”进行关闭。

上传AOF文件至华为云ECS

为节省传输时间,建议先压缩AOF文件,再将压缩文件(如以SFTP方式)上传到华为云ECS。

ECS需保证有足够的磁盘空间,供数据文件解压缩,同时要与缓存实例网络互通,通常要求相同VPC和相同子网,且安全组规则不限制访问端口。安全组设置请参考如何选择和配置安全组

导入数据

登录弹性云服务器并执行如下命令导入数据。

redis-cli -h {dcs_instance_address} -p {port} -a {password} --pipe < appendonly.aof

{dcs_instance_address}为目标Redis连接地址,{port}为目标Redis的端口,{password}为目标Redis的连接密码。

VPC内导入AOF文件,平均100w数据(每条数据20字节),大概4~10秒完成。

如果使用公网SSL加密时,连接地址和端口请替换为实际的配置信息。

迁移后验证

数据导入成功后,请连接DCS缓存实例,通过info命令,确认数据是否已按要求成功导入。连接Redis的方法请参考Redis-cli客户端连接Redis

如果导入不成功,请检查操作步骤,如果是导入命令不正确,建议使用flushall或者flushdb命令清理目标实例中的缓存数据,修改导入命令后重新导入。