---
title: Redis迁移至Redis指导
description: "1. 目标服务器安装Redis。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/systemmigration/DevKit_Porting_0130.html
sourcePath: /source/zh/kunpengdevps/portingadvisor/systemmigration/DevKit_Porting_0130.html
indexId: 25d6df40c2b6a2fefc8fba36f17a5136e6d763f1566e36bc6cee3c5c27be077a79
---
# Redis迁移至Redis指导

1. 目标服务器安装Redis。

  - 方案一：源码编译安装，可参考Redis官方安装部署教程(https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/install-redis-from-source/)。

    a. 下载目标版本      源码包(https://download.redis.io/releases/)
并解压。version请根据实际版本进行替换。

```
tar -zxvf redis-
{version}
.tar.gz
```


    b. 进入Redis解压目录。

```
cd redis-
{version}
```


    c. 执行编译make操作。
```
make
```

Redis5.0之后版本编译支持systemd，6.0版本之后编译支持TLS，编译时选择需要的编译选项。
```
make USE_SYSTEMD=yes BUILD_TLS=yes
```


      - 若执行TLS显示缺少OpenSSL，则需要安装OpenSSL开发库：
        1 sudo yum install openssl openssl-devel

      - 若执行systemd显示缺少开发库，则需要安装systemd开发库：
        1 sudo yum install systemd-devel

    d. 执行make install安装操作，可选择默认安装地址，也可使用PREFIX来指定安装地址。
      1 2 make install make PREFIX={install_path} install

  - 方案二：软件包管理工具安装
    执行install指令，但采取该方法安装不支持TLS。

    1 sudo yum install redis

2. （可选）安装完成之后，可配置systemd。

  a. 将Redis默认service拷贝至“/usr/lib/systemd/system”路径。可通过如下命令查找redis.service所在路径。
    1 find / -name redis.service

  b. 修改redis.service文件。

    1. 打开redis.service文件。
      1 vi redis.service

    2. 按“i”进入编辑模式，修改"ExecStart="的内容。
      1 ExecStart={install_path}/bin/redis-server {conf_path}

    3. 按“Esc”，输入:wq!，按“Enter”保存并退出。
  c. 修改完成后加载redis.service。
    1 systemctl daemon-reload

  d. 启动Redis服务。
    1 systemctl start redis.service

  e. 检查服务是否启动。
    1 systemctl status redis.service

    当“Active”字段显示包含“active（running）”表示成功。

  f. 停止Redis服务。
    1 systemctl stop redis.service

3. 迁移配置、数据等文件。
在原服务器上执行指令以定位数据和配置文件，然后在目标服务器挂载目录中找到相应的文件并进行迁移。如果一台服务器上运行多个Redis实例，需要对每个实例单独执行迁移配置文件、数据文件等的操作。

  - 配置文件迁移
    进入Redis的src目录下，先启动redis-server，再启动redis-cli服务，在redis-cli内输入：

    1 INFO

    找到“config_file:”字样记录下配置文件地址，将配置文件替换掉安装目录下的redis.conf文件，注意如果“config_file:”中为空，说明启动时未指定配置文件，可跳过该步骤。

  - 数据文件迁移

    a. 进入Redis的src目录下，启动redis-server，再启动redis-cli服务，在redis-cli内输入：
      1 save

    b. 在redis-cli服务中执行如下指令判断是否开启appendonly持久化。
```
CONFIG GET appendonly
```


      - 如果appendonly参数为no，则表示AOF功能未启用，则无需迁移AOF文件。
      - 如果appendonly参数为yes，继续执行下一步。
    c. 获取Redis数据存储目录。
      1 CONFIG GET dir

    d. 迁移AOF文件（AOF记录服务器收到的每个写入操作）。
      请进入查询到的dir目录，将.aof结尾的文件迁移到目标服务器上Redis配置文件中指定的dir目录下。如果dir设置为./，则应将.aof文件迁移到目标服务器上安装Redis的相对路径中的相应位置。且需满足以下条件：
      - AOF持久化文件名称与配置文件中参数appendfilename一致。
      - Redis应用启动了AOF可持久化策略（配置文件中参数appendonly设置为yes）。


    e. 迁移RDB文件（RDB会持久化对数据集执行时间点快照）。
      查询RDB文件名：

      1 CONFIG GET dbfilename

      请进入查询到的dir目录，根据输出的文件名查找.rdb文件，将.rdb文件迁移到目标服务器上Redis配置文件中指定的dir目录下，且RDB文件名与配置文件中参数dbfilename一致。若dir设置为./，则应将.rdb文件迁移到目标服务器上安装Redis的相对路径中的相应位置。

  - 集群迁移

    a. 如果原有Redis是集群模式，需要将集群配置文件迁移到新的Redis服务器上，再次执行：
      1 CONFIG GET dir

    b. 进入刚刚查询到的dir目录，集群的配置文件通常命名为nodes.conf（如果文件名已被修改，请将所有.conf文件一并迁移）。将这些文件迁移到目标服务器的dir目录下，以确保集群配置保持一致。
4. （可选）若Redis为主从模式，请修改相关配置。

  - 如果当前节点为主节点，请修改配置文件（默认为redis.conf）：

    - bind：修改为当前主节点的IP地址。
    - logfile和dir：请确保配置为正确的日志和数据地址，建议使用绝对路径。
    - masterauth：确保填写正确的主节点认证密码。
    - requirepass：确保填写正确的主节点CLI认证密码。
  - 如果当前节点为从节点，请修改配置文件（默认为redis.conf）：

    - bind：修改为当前从节点的IP地址。
    - logfile和dir：请确保配置为正确的日志和数据地址，建议使用绝对路径。
    - masterauth：确保填写正确的从节点认证密码。
    - requirepass：确保填写正确的从节点CLI认证密码。
    - replicaof（对于5.0.0之前版本使用slaveof）：替换为正确的主节点IP和端口信息。
  - 如果当前节点还部署了哨兵节点，请迁移哨兵配置文件到正确的路径，并修改以下配置（默认为sentinel.conf）：

    - sentinel monitor mymaster：修改为主节点的IP和端口号。
    - sentinel auth-pass mymaster：修改为正确的主节点认证密码。
部署在其他机器上的主从、哨兵节点也可以按照相似的方式修改。
5. 启动Redis服务。

  - 方式一：使用Redis自带脚本启动（如果原业务使用指定配置文件，需指定对应原路径配置文件进行重启）
    1 /usr/local/bin/redis-server

  - 方式二：使用systemd启动

    a. 启动Redis服务。
      1 systemctl start redis.service

    b. 检查服务是否启动。
      1 systemctl status redis.service

      当“Active”字段显示包含“active（running）”表示成功。

6. （可选）若Redis为主从模式，请根据实际业务需求，启动Redis哨兵节点。
