手动打包方式

请根据下列指导进行源成分打包,防止数据、配置、日志文件在安装包外导致丢失。

需要迁移的文件

表1 需要迁移的文件

文件类型

说明

数据文件

包括AOF文件和RDB文件。

配置文件

Redis相关配置文件,如redis.conf、sentinel.conf。

日志文件

Redis相关日志文件,即.log文件。

操作步骤

  1. 查看需要迁移的文件是否在指定目录下。

    • redis-server目录结构为“bin/redis-server”
    • redis-server目录结构为“redis-xxx/src/redis-server”

    表1中的文件均存在于“bin”“redis-xxx”目录下,则直接执行6;若不是,则需要额外获取“bin”“redis-xxx”目录外的文件。

  2. 在redis-server同级目录下创建一个用于存放迁移所需额外文件的目录,命名为source_related(例如“bin/source_related”)。

    1
    2
    mkdir source_related
    cd source_related
    

  3. Redis启动需指定配置文件(默认为redis.conf),如果您的配置文件不在上述目录内,请执行以下命令。

    1
    2
    mkdir -p ./path/to/
    cp /path/to/redis.conf ./path/to
    

    /path/to:为redis.conf存放目录,请根据实际情况进行替换。

  4. 查找数据、日志文件路径。

    1. 打开一个新的终端启动redis-server进入redis-cli控制台,执行以下命令查找数据文件路径(默认名称为dump.rdb和appendonly.aof)。
      1
      ./redis-cli -h IP -p port
      
      • IP:表示Redis的IP地址。
      • redis-cli启动默认<port>为6379。
    2. 如果配置文件设置了requirepass字段,请执行以下命令验证密码。
      1
      AUTH password
      
    3. 查找数据目录地址。
      • 获取dir:
        1
        CONFIG GET dir
        
        返回信息如下:
        1
        2
        1) "dir"
        2) "/home/user"
        
      • 获取appendfilename:
        1
        CONFIG GET appendfilename
        

        返回信息如下:

        1
        2
        1) "appendfilename"
        2) "appendonly.aof"
        

        若返回信息为空(即empty list or set),请执行CONFIG GET appendonly,如果为yes,请前往3中Redis配置文件中查找appendfilename字段,如默认值appendonly.aof。

      • 获取dbfilename:
        1
        CONFIG GET dbfilename
        
        返回信息如下:
        1
        2
        1) "dbfilename"
        2) "dump.rdb"
        
    4. 查找日志地址。
      1
      CONFIG GET logfile
      
      返回信息如下:
      1
      2
      1) "logfile"
      2) "/home/user/redis/redis-4.0.14/redis.log"
      
    5. 如果文件存在且不在上述目录结构中,回到之前的终端“source_related”目录下执行以下命令。
      1
      mkdir -p ./dir_address
      
    6. 复制数据文件。
      1
      2
      cp /home/user/appendonly.aof ./dir_address
      cp /home/user/dump.rdb ./dir_address
      

      若提示文件或目录不存在,则表示不存在该文件,无需打包。

      • /home/user:4.c获取的dir地址。
      • appendonly.aof:4.c获取的appendfilename。
      • dump.rdb:4.c获取的dbfilename。
    7. 复制日志数据。
      1
      2
      mkdir -p ./home/user/redis/redis-4.0.14
      cp /home/user/redis/redis-4.0.14/redis.log ./home/user/redis/redis-4.0.14
      

      /home/user/redis/redis-4.0.14/redis.log:为4.d获取的日志文件存放目录,请根据实际情况进行替换。

  5. 请在“redis-server”的父目录下创建一个名为devkit_redis_conf_data.json的JSON文件,并将以下内容添加至该文件中,请根据实际情况修改相关信息。如果使用哨兵模式,请确保is_sentinel_mode设置为true。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {
    "redis": {
        "redis_conf": "",
        "redis_conf_in_package": false,
        "redis_dir": "",
        "redis_dir_in_package": false,
        "redis_dbfile": "",
        "redis_aof": "",
        "redis_logfile": "",
        "redis_logfile_in_package": false,
        "redis_pidfile": ""
    },
    "sentinel": {
        "sentinel_conf": "",
        "is_sentinel_mode": false,
        "sentinel_conf_in_package": false,
        "sentinel_dir": ""
    }
    }
    

    redis配置:

    • redis_conf:Redis配置文件的绝对路径。
    • redis_conf_in_package:Redis配置文件是否包含在Redis安装包中,默认为false。
    • redis_dir:在4.c获取dir的绝对路径。
    • redis_dir_in_package:Redis的dir是否在Redis安装包中,默认为false。
    • redis_dbfile:在4.c获取的dbfile绝对路径。
    • redis_aof:在4.c获取的appendfile绝对路径。
    • redis_logfile:在4.d获取的logfile绝对路径。
    • redis_logfile_in_package:Redis的logfile是否包含在Redis安装包中,默认为false。
    • redis_pidfile:Redis配置文件中的pidfile路径。如果没有修改,可以不填写。

    sentinel配置:

    • sentinel_conf:Redis哨兵配置文件的绝对路径,默认为sentinel.conf。
    • is_sentinel_mode:是否启用哨兵模式,默认为false。若启用,设置为true。
    • sentinel_conf_in_package:Redis哨兵配置文件是否在Redis安装包中,默认为false。
    • sentinel_dir:Redis哨兵配置文件中的dir绝对路径。如果没有修改,可以不填写。

  6. 将待扫描的源成分对应安装目录打包为压缩包,以tar.gz格式压缩包为例,压缩包名称请根据实际情况替换。

    1. 在redis-server所在目录的上级目录执行以下命令打包,以redis.tar.gz为例。
      • 对于bin/redis-server目录结构,进入bin上级目录:
        1
        tar -zcvf redis.tar.gz bin/
        
      • 对redis-xxx/src/redis-server目录结构,进入redis-xxx上级目录:
        1
        tar -zcvf redis.tar.gz redis-xxx/
        
    2. 支持如下两种源成分获取方式。
      • 若使用“源成分包上传”方式,请直接将tar包通过DevKit页面上传。
      • 若使用“节点服务器获取”方式,请执行如下命令解压源成分压缩包,压缩包名称请根据实际情况替换。
        1. 使用SSH远程登录工具,将压缩包文件上传至节点服务器的自定义路径。
        2. 进入保存压缩包文件的自定义目录。
          1
          cd 自定义路径
          
        3. 解压源成分压缩包,压缩包名称请根据实际情况替换。
          1
          tar xvf redis.tar.gz
          
        4. 解压完成,可选择执行如下命令删除源成分压缩包。
          1
          rm -f redis.tar.gz
          
        5. 指定解压后的文件路径为源成分所在路径。

  7. 打包完成后请手动删除创建的source_related目录和devkit_redis_conf_data.json文件。