Redis在Ubuntu上的数据迁移步骤
导读: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 dbsize、keys '*'(必要时用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
