Codis迁移至Redis实战
时间:2022-07-24
本文章向大家介绍Codis迁移至Redis实战,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
出发点
因为线上多机房,然后有一个机房历史原因使用了Codis,这样就导致开发、QA、线上环境在缓存软件这块有点差异,为了因为这种差异化的东西,导致开发出来的软件对接缓存应用导致不同表现情况的话,线上统一用一个版本的Redis版本避免此问题。
搭建环境
安装Redis实例
yum install -y gcc gcc-c++ make autoconf automake libtool
mkdir -p /data/src
cd /data/src
wget -c http://download.redis.io/releases/redis-2.8.18.tar.gz
tar xf redis-2.8.18.tar.gz
cd redis-2.8.18
make
make PREFIX=/data/app/redis install
mkdir -p /data/logs /data/appData/redis
配置配置文件:
cat > /data/app/redis/redis.conf << _EOF_
daemonize yes
pidfile /var/run/redis.pid
port 6379
timeout 0
loglevel notice
logfile /data/logs/redis.log
databases 16
dir /data/appData/redis
slave-serve-stale-data yes
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
slowlog-log-slower-than 10000
slowlog-max-len 1024
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
activerehashing yes
_EOF_
启动:
/data/app/redis/bin/redis-server /data/app/redis/redis.conf
echo '/data/app/redis/bin/redis-server /data/app/redis/redis.conf' >> /etc/rc.local
安装迁移工具redis-migrate-tool
cd /data/src
git clone https://github.com/vipshop/redis-migrate-tool.git
cd redis-migrate-tool
autoreconf -fvi
./configure
make
cp src/redis-migrate-tool /usr/bin
配置
redis-migrate-tool
配置:
[source]
type: single
servers:
- 192.168.1.100:6379
- 192.168.1.100:6380[target]
type: single
servers:
- 127.0.0.1:6379[common]
listen: 0.0.0.0:8888
mbuf_size: 1024
192.168.1.100:6379
和192.168.1.100:6380
指的是Codis每个Group的master,即源实例。
127.0.0.1:6379
指的是迁移后的Redis实例,即目标实例。
简单解释下原理:
redis-migrate-tool 会作为 Codis 每个 Group 的 master 的 slave,接收到的数据以客户端的形式写入目标实例
迁移
启动 redis-migrate-tool:
redis-migrate-tool -c rmt.conf -o rmt.log -d
观察 rmt.log 知道输出
All nodes' rdb file parsed finished for this write thread(0).
通知状态页和 dbsize 确定 Key 数量是否一致 (初始同步完成) 执行 redis-cli -p 8888 info
确认
# 为 1
all_rdb_received:1
all_rdb_parsed:1
# Codis group 数量
rdb_received_count:2
rdb_parsed_count:2
配置服务连接 Redis 实例,检查 Codis 连接,知道所有连接断开,执行 redis-cli -p 8888 info
确认
# 为1
all_rdb_received:1
all_rdb_parsed:1
# Codis group 数量
rdb_received_count:2
rdb_parsed_count:2
# 一致
total_msgs_recv:27005
total_msgs_sent:27005
# 为0
total_mbufs_inqueue:0
total_msgs_outqueue:0
关闭 redis-migrate-tool
redis-cli -p 8888 shutdown
最后下架你的Codis机器即可,此方法你还可以原始至Redis到Redis之间的迁移,可以实践测试,注意支持的数据类型。
- VFS四大对象之四-struct file
- 《Redis设计与实现》读书笔记(二) ——Redis中的字典(Hash)
- 《Redis设计与实现》读书笔记(三) ——Redis中的链表
- 《Redis设计与实现》读书笔记(四) ——Redis中的跳跃表
- 解析Linux中的VFS文件系统之文件系统的注册(二)
- vivi虚拟摄像头驱动程序
- 系统架构 | 基于微服务架构,改造企业核心系统之实践
- 《Redis设计与实现》读书笔记(五) ——Redis中的整数集合
- 《Redis设计与实现》读书笔记(七) ——Redis对象综述及字符串对象实现原理
- 自动登录脚本
- 极致之处,精彩无限 - 优化了一半的SQL
- 编程修炼 | Scala中Stream的应用场景及其实现原理
- Linux之内存描述符mm_struct
- 大数据 | Spark的现状与未来发展
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法