redis数据迁移
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,1.需求需要将一个redis实例中的部分keys,转移到另一个redis实例2.迁移方案2.1 源实例与目标实例版本相同2.1.1 使用dump命令#!/bin/bash#redis 源ipsrc_i
千家信息网最后更新 2025年02月01日redis数据迁移
1.需求
需要将一个redis实例中的部分keys,转移到另一个redis实例
2.迁移方案
2.1 源实例与目标实例版本相同
2.1.1 使用dump命令
#!/bin/bash#redis 源ipsrc_ip=127.0.0.1#redis 源portsrc_port=6392#redis 目的ipdest_ip=127.0.0.1#redis 目的portdest_port=6393#要迁移的key前缀key_prefix=testi=1redis-cli -h $src_ip -p $src_port keys "${key_prefix}*" | while read keydo redis-cli -h $dest_ip -p $dest_port del $key redis-cli -h $src_ip -p $src_port --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -x restore $key 0 echo "$i migrate key $key" ((i++))done
2.1.2 使用migrate命令
migrate用法:
MIGRATE host port key destination-db timeout [COPY] [REPLACE]
起始版本:2.6.0
时间复杂度:This command actually executes a DUMP+DEL in the source instance, and a RESTORE in the target instance. See the pages of these commands for time complexity. Also an O(N) data transfer between the two instances is performed.
迁移脚本
#!/bin/bash#redis 源ipsrc_ip=127.0.0.1#redis 源portsrc_port=6392#redis 目的ipdest_ip=127.0.0.1#redis 目的portdest_port=6393#要迁移的key前缀key_prefix=testi=1redis-cli -h $src_ip -p $src_port keys "${key_prefix}*" | while read keydo redis-cli -h $src_ip -p $src_port migrate $dest_ip $dest_port $key 0 1000 replace echo "$i migrate key $key" ((i++))done
2.2 源实例与目标实例版本不相同
2.2.1 不可行方案
如果源实例与目标实例版本不相同,使用migrate进行迁移的时候会有如下错误:
1935 migrate key esf_common_auth_code_18587656289(error) ERR Target instance replied with error: ERR DUMP payload version or checksum are wrong
如果源实例与目标实例版本不相同,使用dump进行迁移的时候会有如下错误
(error) ERR DUMP payload version or checksum are wrong
- 如果源实例与目标实例版本不相同,直接复制rdbw文件搭建从库为有如下报错
5453:S 23 Nov 18:13:14.153 * MASTER <-> SLAVE sync: Flushing old data5453:S 23 Nov 18:13:14.153 * MASTER <-> SLAVE sync: Loading DB in memory5453:S 23 Nov 18:13:14.153 # Can't handle RDB format version 85453:S 23 Nov 18:13:14.153 # Failed trying to load the MASTER synchronization DB from disk
2.2.2 可行方案
开启源实例aof持久化功能
config set appendonly yes
手动进行aof持久化
bgrewriteaof
- 新建一个redis实例,与目标实例版本相同并启动
将源实例的redis的aof文件导入新建实例
redis-cli -h 127.0.0.1 -p 6395 -a password --pipe < appendonly.aof
- 通过dump或者migrate的方式将新实例的key迁移到目标实例
实例
版本
目标
相同
目的
方案
前缀
命令
文件
时候
错误
可行
复杂
功能
复杂度
手动
方式
时间
脚本
部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
关系数据库最大的优点是
凤翔开展网络安全宣传
陕西夕秀软件开发有限公司
德勤网络安全岗位怎么样
软件开发里程碑范文
服务器必须用固定ip吗
成都平台软件开发
票务系统软件开发商
软件开发的文档一般是谁写
服务行业的软件开发
r语言怎么提取栅格数据库
红警3无法与后端连接服务器
逻辑与计算机网络技术
宝山区大型软件开发采购信息
关于计算机网络安全攻防
网络安全软件的上市公司
ibm服务器进入bios
国外网络安全品牌
java 简单数据库
斗罗大陆斗罗服服务器通讯异常
怎么共享一台电脑服务器
戴尔服务器怎么报修
工程力学做软件开发
组策略服务器上的默认值
是web服务器上的目录
安徽企业软件开发机构
退役军人报考网络安全工程师
迅雷能不能将网页上传到服务器
qwq服务器
vfp 新建数据库表