温馨提示×

centos redis数据迁移步骤

小樊
45
2025-11-27 18:41:07
栏目: 云计算

CentOS Redis 数据迁移步骤

一 准备与一致性控制

  • 明确持久化方式:查看是否开启 AOF(存在 appendonly.aof 即开启)。迁移以 RDB 为主时,建议先让源库生成一致性快照;以 AOF 为主时,可直接使用 AOF 文件或先执行 BGREWRITEAOF 重写获得干净快照。
  • 低峰期操作并尽量短暂停写:可在维护窗口内执行,减少对业务影响。
  • 版本与兼容性:尽量保持源与目标 Redis 版本相近;跨大版本迁移时优先用 RDB 快照或逐键 DUMP/RESTORE,更稳妥。
  • 目标库准备:确认目标实例的 持久化策略、内存、最大客户端数 等配置满足需求。

二 方法一 离线迁移 RDB 快照(最常用、速度快)

  • 源库生成快照
    • 非阻塞方式:执行 BGSAVE,等待快照生成(可在日志中确认完成)。
    • 阻塞方式:执行 SAVE(仅在可接受短暂停写时使用)。
  • 查找并拷贝 RDB 文件
    • 常见路径:/var/lib/redis/dump.rdb(以实际配置为准)。
    • 拷贝到目标机器:例如 scp 到 /var/lib/redis/
  • 目标库导入
    • 方案A(停机导入,最稳妥):
      1. systemctl stop redis
      2. 备份旧文件:mv /var/lib/redis/dump.rdb /var/lib/redis/dump.rdb.bak
      3. 放入新 RDB:cp /path/dump.rdb /var/lib/redis/dump.rdb
      4. 权限:chown redis:redis /var/lib/redis/dump.rdb;chmod 660 /var/lib/redis/dump.rdb
      5. systemctl start redis
    • 方案B(不停机导入,需关闭 AOF 避免被覆盖):
      1. 动态关闭 AOF:redis-cli CONFIG SET appendonly no
      2. 动态设置数据目录与文件名并落盘:
        • redis-cli CONFIG SET dir /var/lib/redis
        • redis-cli CONFIG SET dbfilename dump.rdb
        • redis-cli CONFIG REWRITE
      3. 重启 Redis 让新 RDB 生效
      4. 数据验证后,再开启 AOF:redis-cli CONFIG SET appendonly yes(如需持久化到配置文件,重启前改回配置并 CONFIG REWRITE)。

三 方法二 在线迁移 不停写(复制或逐键迁移)

  • 主从复制方式(适合不停机、跨机房/跨网段)
    1. 目标实例配置为源实例的 从节点(replicaof 或 slaveof),等待 全量同步 + 部分同步 完成。
    2. 校验数据一致后,在业务低峰执行 切换/故障转移(如配合 Sentinel/手动提升从库为主)。
  • DUMP/RESTORE 逐键迁移(适合小规模或选择性迁移)
    • 单键:
      • 源:redis-cli DUMP key > key.rdb
      • 目标:cat key.rdb | redis-cli -h target -p 6379 RESTORE key 0
    • 批量:在源端获取键列表,循环 DUMP 并在目标端 RESTORE(注意客户端并发与超时)。
  • MIGRATE 命令(原子搬运键,适合点对点迁移)
    • 示例:redis-cli MIGRATE target_host target_port “” 0 10000 COPY REPLACE KEYS key1 key2
    • 说明:COPY 保留源键,REPLACE 覆盖目标键,支持一次迁移多个键。

四 方法三 集群迁移 Redis Cluster

  • 基本思路:在新集群环境搭建完成后,将旧集群的 master 节点 作为新集群的 新节点加入,通过 cluster meet 加入集群,然后使用 redis-trib.rb reshardCLUSTER REBALANCEslots 从旧节点迁移到新节点,观察迁移进度与集群状态,最终将旧节点 del-node 下线。
  • 要点:迁移过程中关注 slot 分布、数据量、网络带宽业务访问,必要时分批次迁移并保留回滚窗口。

五 验证与回滚

  • 数据校验
    • 基础:dbsize、info keyspace、随机 keys 抽样 GET/STRLEN/LLEN 等。
    • 精确:对比源/目标 key 数量重要 key 值/过期时间
  • 回滚预案
    • RDB 方案:保留旧 RDB(如 dump.rdb.bak),异常时停止目标库、恢复原 RDB 并重启。
    • 复制方案:切换回原主或从原主重新建立复制。
  • 常见坑与建议
    • 目标库开启 AOF 时,直接覆盖 RDB 后重启可能再次从空内存重建 AOF,导致数据“丢失”;应先关闭 AOF、导入 RDB、验证后再开启 AOF。
    • 权限与路径:确保目标 RDB 文件属主为 redis:redis、目录可写,且 dir/dbfilename 配置正确。
    • 大 Key/大 Value:逐键或分片迁移时控制批量与超时,避免阻塞与超时。
    • 定期演练与备份:建立 定时 RDB 备份恢复演练 机制,确保备份可用。

0