鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

Redis迁移至Redis指导

  1. 目标服务器安装Redis。
    • 方案一:源码编译安装,可参考Redis官方安装部署教程
      1. 下载目标版本源码包并解压。version请根据实际版本进行替换。
        tar -zxvf redis-{version}.tar.gz
      2. 进入Redis解压目录。
        cd redis-{version}
      3. 执行编译make操作。
        1
        make
        

        Redis5.0之后版本编译支持systemd,6.0版本之后编译支持TLS,编译时选择需要的编译选项。

        1
        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
          
      4. 执行make install安装操作,可选择默认安装地址,也可使用PREFIX来指定安装地址。
        1
        2
        make install
        make PREFIX={install_path} install
        
    • 方案二:软件包管理工具安装

      执行install指令,但采取该方法安装不支持TLS。

      1
      sudo yum install redis
      
  2. (可选)安装完成之后,可配置systemd。
    1. 将Redis默认service拷贝至“/usr/lib/systemd/system”路径。可通过如下命令查找redis.service所在路径。
      1
      find / -name redis.service
      
    2. 修改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”保存并退出。
    3. 修改完成后加载redis.service。
      1
      systemctl daemon-reload
      
    4. 启动Redis服务。
      1
      systemctl start redis.service
      
    5. 检查服务是否启动。
      1
      systemctl status redis.service
      

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

    6. 停止Redis服务。
      1
      systemctl stop redis.service
      
  3. 迁移配置、数据等文件。

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

    • 配置文件迁移

      进入Redis的src目录下,启动redis-server,再启动redis-cli服务,在redis-cli内输入:

      1
      INFO
      

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

    • 数据文件迁移
      1. 进入Redis的src目录下,启动redis-server,再启动redis-cli服务,在redis-cli内输入:
        1
        save
        
      2. 在redis-cli服务中执行如下指令判断是否开启appendonly持久化。
        1
        CONFIG GET appendonly
        
        • 如果appendonly参数为no,则表示AOF功能未启用,则无需迁移AOF文件。
        • 如果appendonly参数为yes,继续执行下一步。
      3. 获取Redis数据存储目录。
        1
        CONFIG GET dir
        
      4. 迁移AOF文件(AOF记录服务器收到的每个写入操作)。
        请进入查询到的dir目录,将.aof结尾的文件迁移到目标服务器上Redis配置文件中指定的dir目录下。如果dir设置为./,则应将.aof文件迁移到目标服务器上安装Redis的相对路径中的相应位置。且需满足以下条件:
        • AOF持久化文件名称与配置文件中参数appendfilename一致。
        • Redis应用启动了AOF可持久化策略(配置文件中参数appendonly设置为yes)。
      5. 迁移RDB文件(RDB会持久化对数据集执行时间点快照)。

        查询RDB文件名:

        1
        CONFIG GET dbfilename
        

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

    • 集群迁移
      1. 如果原有Redis是集群模式,需要将集群配置文件迁移到新的Redis服务器上,再次执行:
        1
        CONFIG GET dir
        
      2. 进入刚刚查询到的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启动
      1. 启动Redis服务。
        1
        systemctl start redis.service
        
      2. 检查服务是否启动。
        1
        systemctl status redis.service
        

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

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