前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Codis迁移至Redis实战

Codis迁移至Redis实战

作者头像
后场技术
发布2020-09-03 15:22:34
4980
发布2020-09-03 15:22:34
举报
文章被收录于专栏:后场技术
出发点

因为线上多机房,然后有一个机房历史原因使用了Codis,这样就导致开发、QA、线上环境在缓存软件这块有点差异,为了因为这种差异化的东西,导致开发出来的软件对接缓存应用导致不同表现情况的话,线上统一用一个版本的Redis版本避免此问题。

搭建环境

安装Redis实例

代码语言:javascript
复制
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

配置配置文件:

代码语言:javascript
复制
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_

启动:

代码语言:javascript
复制
/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

代码语言:javascript
复制
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 配置:

代码语言:javascript
复制
[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:6379192.168.1.100:6380 指的是Codis每个Group的master,即源实例。

127.0.0.1:6379 指的是迁移后的Redis实例,即目标实例。

简单解释下原理:

redis-migrate-tool 会作为 Codis 每个 Group 的 master 的 slave,接收到的数据以客户端的形式写入目标实例

迁移

启动 redis-migrate-tool:

代码语言:javascript
复制
redis-migrate-tool -c rmt.conf -o rmt.log -d

观察 rmt.log 知道输出

代码语言:javascript
复制
All nodes' rdb file parsed finished for this write thread(0).

通知状态页和 dbsize 确定 Key 数量是否一致 (初始同步完成) 执行 redis-cli -p 8888 info 确认

代码语言:javascript
复制
# 为 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 确认

代码语言:javascript
复制
# 为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

代码语言:javascript
复制
redis-cli -p 8888 shutdown

最后下架你的Codis机器即可,此方法你还可以原始至Redis到Redis之间的迁移,可以实践测试,注意支持的数据类型。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后场技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 出发点
  • 搭建环境
  • 配置
  • 迁移
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档