首页主机资讯Redis在Ubuntu上的数据迁移步骤

Redis在Ubuntu上的数据迁移步骤

时间2026-01-21 17:40:05发布访客分类主机资讯浏览624
导读:Redis在Ubuntu上的数据迁移步骤 一、迁移方式速览与选择 RDB 文件拷贝:停机时间最短、操作简单,适合一次性迁移或可接受秒级丢失的场景。 主从复制:不停机、平滑切换,适合生产环境在线迁移与扩容。 redis-dump/redis...

Redis在Ubuntu上的数据迁移步骤

一、迁移方式速览与选择

  • RDB 文件拷贝:停机时间最短、操作简单,适合一次性迁移或可接受秒级丢失的场景。
  • 主从复制:不停机、平滑切换,适合生产环境在线迁移与扩容。
  • redis-dump/redis-load:以 JSON 形式导出/导入,适合跨版本或跨环境迁移少量/选择性数据。
  • RedisShake:支持在线全量+增量同步,适合跨机房/云厂商迁移与持续追平。
  • DUMP/RESTORE 与管道:逐键或批量迁移,适合精确控制迁移范围与脚本化处理。

二、方法一 RDB 文件拷贝(停机最短)

  • 在源实例生成一致性快照并确认数据目录
    • 连接源实例:redis-cli
    • 如有密码:auth < yourpassword>
    • 查看目录:config get dir(常见为 /var/lib/redis
    • 触发快照:save(或业务低峰期等待自动快照)
  • 复制 RDB 到目标机器
    • 建议先停写或切到维护窗口,再拷贝:sudo cp /var/lib/redis/dump.rdb /home/backup/dump.rdb
    • 传输:scp /home/backup/dump.rdb < user> @< target-ip> :/var/lib/redis/
  • 在目标实例加载
    • 确认目标数据目录:redis-cli config get dir
    • 如目录不同,将 RDB 放到目标目录并设置权限:sudo chown redis:redis /var/lib/redis/dump.rdb
    • 重启目标 Redis:sudo systemctl restart redis-server
    • 验证:redis-cli dbsizekeys '*'(必要时用 SCAN 分批核对)
  • 如启用 AOF,需同时迁移 appendonly.aof 并保持配置一致,否则可能以 RDB 为准或产生不一致。

三、方法二 主从复制(在线平滑迁移)

  • 源实例配置(示例)
    • 编辑:sudo nano /etc/redis/redis.conf
    • 允许复制:bind 0.0.0.0
    • 开启持久化(建议):save 60 1
  • 目标实例配置
    • 在从节点添加:replicaof < master-ip> 6379
    • 如有密码:masterauth < yourpassword>
  • 启动与验证
    • 重启:sudo systemctl restart redis-server
    • 在从节点检查:redis-cli -h < slave-ip> info replication,应见 master_link_status:up
    • 数据追平后,可切换应用读写到从节点,或提升从节点为主实现切换(注意一致性策略与客户端重连)。

四、方法三 工具化迁移(redis-dump 或 RedisShake)

  • redis-dump/redis-load(JSON 导出导入)
    • 安装:sudo apt-get install ruby ruby-dev gcc & & sudo gem install redis-dump
    • 导出:redis-dump -u :< password> @< src-ip> :6379 backup.json
    • 导入:cat backup.json | redis-load -u :< password> @< dst-ip> :6379
    • 适合跨版本/跨环境、选择性迁移或数据量中小场景。
  • RedisShake(在线全量+增量)
    • 获取并构建(示例):git clone https://github.com/alibaba/RedisShake & & cd RedisShake & & sh build.sh
    • 配置 shake.toml(示例为单机到单机)
      • [sync_reader] cluster=false address="< src-ip> :6379" password="< src-pass> " sync_rdb=true sync_aof=true
      • [redis_writer] cluster=false address="< dst-ip> :6379" password="< dst-pass> "
    • 启动:nohup ./redis-shake shake.toml &
    • 观察日志直至全量完成并进入增量追平,再切换应用。

五、关键注意事项与验证清单

  • 持久化与文件
    • 确认源/目标 config get dir,RDB 默认 /var/lib/redis/dump.rdb;如启用 AOF,需同时迁移 appendonly.aof 并保持一致配置。
  • 权限与所有权
    • 目标 Redis 进程用户(常见 redis:redis)必须对数据目录与 RDB/AOF 有读写权限,避免启动报错(如 saving-permission-denied)。
  • 版本兼容
    • 跨大版本直接用 RDB 可能存在兼容性问题;必要时用中间版本/工具(如 redis-dump 或 RedisShake)过渡。
  • 网络与安全
    • 开放复制所需端口(默认 6379),如跨公网建议启用 TLS/ACL,并限制来源 IP。
  • 一致性验证
    • 迁移后核对:dbsize、抽样 SCAN/全量 KEYS *、关键业务键、TTL;必要时用 redis-check-rdb 校验 RDB 完整性。
  • 切换策略
    • 主从切换前先停写或双写;切换后保留旧实例一段时间以便回滚,并观察复制偏移与延迟。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Redis在Ubuntu上的数据迁移步骤
本文地址: https://pptw.com/jishu/788890.html
Ubuntu Redis的持久化策略有哪些 Redis在Ubuntu上的监控方法是什么

游客 回复需填写必要信息