1、redis-shake

redis-shake模式介绍

redis-shake 常见于生产环境中将 Redis 单机实例迁移到集群实例或者需要无缝将一个小规格 Redis 实例迁移到另一个大规格 Redis 实例。

redis-shake 支持迁移单实例、集群等,也支持将数据备份或者迁移到阿里云。

redis备份ku redis备份工具_数据库

注意事项

如果目标库的数据逐出策略(maxmemory-policy)配置为除noeviction以外的值,可能导致目标库的数据与源库不一致。关于数据逐出策略详情,请参见Redis数据逐出策略介绍。
如果源库中的部分Key使用了过期(Expire)机制,由于可能存在Key已过期但未被及时删除的情形,在目标库中查看(如通过info命令)的Key数量会比源库的Key数量少。

安装redis-shake

  1. 登录待安装redis-shake的设备,例如ECS实例或本地设备。
  2. 执行下述命令下载redis-shake文件:
wget 'https://github.com/alibaba/RedisShake/releases/download/v3.1.7/redis-shake-linux-amd64.tar.gz'

说明 本文以redis-shake 3.1.7版本为例演示操作流程。如有更新版本,推荐使用最新版本

  1. 执行下述命令解压redis-shake文件:
tar xzf redis-shake-linux-amd64.tar.gz
  1. 在安装redis-shake的设备上,执行数据迁移操作。
  1. 在redis-shake目录中,执行下述命令,进入配置文件编辑界面:
vim sync.toml
  1. 输入a进入编辑模式。
  2. 修改配置文件。

类别

参数

说明

取值示例


type

redis-shake模式,固定为sync,为同步模式。

sync

source

address

源库的连接地址和端口号,连接地址和端口号之间使用英文冒号(:)分隔。说明如果源库与redis-shake部署在同一设备,可填写为127.0.0.1:6379。如果源库为集群架构,需要为N个节点启动N个redis-shake工具,源端分别为各节点的连接地址,目标端为相同目标实例地址(标准架构的连接地址、集群架构的任意节点连接地址、读写分离架构的主节点连接地址)。

127.0.0.1:6379

username

源库的账号,如果源库未使用ACL,无需填写。

ausername

password

源库的密码,如果源库未设置密码,无需填写。

Rp829dlwa

target

type

目标实例的架构,取值:standalone:标准(主从)架构集群架构代理模式(Proxy)读写分离架构说明 目标实例为读写分离架构时,目标连接地址(address)需填写读写分离实例的主节点。cluster:集群架构直连模式

standalone

address

目标实例的连接地址与端口号,连接地址和端口号之间使用英文冒号(:)分隔。关于如何获取连接地址和端口号,请参见查看连接地址。ECS实例与目标实例为同一专有网络时,可通过专有网络进行迁移,需获取Tair或Redis实例的专有网络连接地址。若ECS实例与目标实例为跨地域或不在同一个专有网络下,则需要通过公网进行迁移。本地设备可通过公网进行迁移,需获取Tair或Redis实例的公网连接地址。

r-bp1wcw2rlw76acc5k****.redis.rds.aliyuncs.com:6379

password

目标实例的账号(需具备读写权限)及其密码。使用默认账号(以实例ID命名的账号):直接填写密码即可。使用新创建的账号:密码格式为*user:password*。例如自定义账号为testaccount,密码为Rp829dlwa,密码需填写为testaccount:Rp829dlwa。关于如何创建账号,请参见创建与管理账号

testaccount:Rp829dlwa

说明 其他参数如无特殊需求无需配置,如需了解更多,请查看sync.toml文件中各参数的注释。

  1. 按下Esc键退出编辑模式,输入:wq并按回车键保存配置、退出编辑界面。
  2. 执行下述命令启动redis-shake,redis-shake将开始执行数据迁移:
./redis-shake sync.toml

redis-shake将在屏幕上打印运行的日志信息。

2、redis-dump安装

2.1 mac上安装

brew install ruby
gem sources --add https://mirrors.aliyun.com/rubygems/
gem sources --remove https://rubygems.org/
gem sources --list
gem install redis-dump -V

2.2 centos上安装

2.2.1 方式一:

  • 在centos7上yum安装

#安装
yum install centos-release-scl-rh -y
yum install rh-ruby27 rh-ruby27-ruby-devel.x86_64 -y
scl  enable  rh-ruby27 bash
ruby -v
gem install redis-dump -V

#备份单个db
redis-dump -u :redis_password@redis_ip:6379 -d 0 > /tmp/db0.json
redis-dump -u :redis_password@redis_ip:6379  -d 1 > /tmp/db1.json

#备份整个db
redis-dump -u :redis_password@redis_ip:6379  > /tmp/all.json

备份恢复
cat /tmp/db0.json |redis-load -u :redis_password@redis_ip:6379
cat /tmp/all.json |redis-load -u :redis_password@redis_ip:6379

  • 当退出当前终端后,再次使用redis-dump,需要再次执行命令
scl  enable  rh-ruby27 bash
2.2.2 方式二
  • rvm(ruby versiuon manager)
  • 该方式需要配置代理

export http_proxy='代理ip:代理端口'
export https_proxy='代理ip:代理端口'

curl -sSL https://get.rvm.io | bash
source /etc/profile.d/rvm.sh
rvm install ruby-2.7
gem install redis-dump -V

#验证
redis-dump -v