基于Redis-port实现阿里云上的Redis(集群版迁移)

本文是实现关于阿里云上Redis(集群版)的迁移,其实非集群的也可以实现,实现的方式都是相同的,都是通过Redis-port实现,只不过集群版的.rdb(数据文件)多一些。

首先介绍下什么是Redis-port:
Redis-port是github上的一款开源第三方软件,基于GO语言实现,主要是为Redis迁移服务。基本的四个功能是,decode(解码),restore(恢复),dump(导出),sync(同步),具体的操作方式如下:

  • DECODE dumped payload to human readable format (hex-encoding)
redis-port decode    [--ncpu=N] [--parallel=M] \
    [--input=INPUT] \
    [--output=OUTPUT]
  • RESTORE rdb file to target redis
redis-port restore   [--ncpu=N] [--parallel=M] \
    [--input=INPUT]  [--faketime=FAKETIME] [--extra] [--filterdb=DB] \
     --target=TARGET [--auth=AUTH] [--redis|--codis]
  • DUMP rdb file from master redis
redis-port dump      [--ncpu=N] [--parallel=M] \
     --from=MASTER   [--password=PASSWORD] [--extra] \
    [--output=OUTPUT]
  • SYNC data from master to slave
redis-port sync      [--ncpu=N] [--parallel=M] \
     --from=MASTER   [--password=PASSWORD] [--psync] [--filterdb=DB] \
     --target=TARGET [--auth=AUTH] [--redis|--codis] [--sockfile=FILE [--filesize=SIZE]]

以下是根据阿里云现有的Redis集群版实现的跨账号迁移操作具体如下:

  • 先下载老账号下Redis集群版的rdb文件:

因为我这是测试机没数据,先添点数据,写个python实现输出插入的语句200条:
基于Redis-port实现阿里云上的Redis(集群版迁移)
在DMS上插入打印出来的200条redis执行命令:
基于Redis-port实现阿里云上的Redis(集群版迁移)
查看下,插入数据成功:
基于Redis-port实现阿里云上的Redis(集群版迁移)
接着将数据rdb文件下载:
先将实例全量备份,因为只插入了200条数据,所以数据量都是0M,,没关系反正有数据测试就ok,继续往下,点击右侧正常下载:
基于Redis-port实现阿里云上的Redis(集群版迁移)

  • 在新账号下启一台ECS,将rdb文件上传,因为rdb文件有点长,你可以先更改为简单的名称,PS:rdb文件没指定的顺序,可以随意起名。

基于Redis-port实现阿里云上的Redis(集群版迁移)

  • 在新ECS上 下载redis-port工具,可以通过下载

基于Redis-port实现阿里云上的Redis(集群版迁移)

  • 将该redis-port修改为可执行文件 chmod u+x redis-port
  • 在redis-port所在目录下执行mkdir logs,因为redis-port需要一个日志目录存放错误日志,而redis-port又不会创建这个日志文件,这有点坑,不过没事手动创建吧
  • 测试下是否正常使用redis-port和rdb文件因为redis-port 需要输入redis数据库的密码,先检查是否有密码,使用config get requirepass查看,如下代表无密码,需要设置:
    基于Redis-port实现阿里云上的Redis(集群版迁移)

1) 设置密码,config set requirepass 12345,将密码设置为12345,出现 NOAUTH Authentication required,表示需要密码登录,密码设置成功,接着通过auth 尝试登录:
基于Redis-port实现阿里云上的Redis(集群版迁移)
2) 导入rdb查看是否正常,导入hins4621549_data_20180521104058.rdb 显示OK,之后将所有的rdb文件导入:
基于Redis-port实现阿里云上的Redis(集群版迁移)
3) get a1的值 获到helloworld 成功。
基于Redis-port实现阿里云上的Redis(集群版迁移)

  • 最后尝试将数据导入到redis集群中吧!
    ping r-bp154217ddd6dd14.redis.rds.aliyuncs.com测试redis和ECS内网是否互通,互通就可以尝试rdb文件的上传了,(PS:注意redis数据库有两种模式经典和专有,因为redis不支持通过公网访问所以在使用专有网络ECS时,一定要确保内网是互通的)

基于Redis-port实现阿里云上的Redis(集群版迁移)
OK迁移完整,PS:在往redis数据库导入rdb文件时,需注意Redis的白名单的设置,要把ECS的内网放入进去不然会一直报错的
基于Redis-port实现阿里云上的Redis(集群版迁移)

  • 通过控制台查看redis数据的,ok迁移成功
    基于Redis-port实现阿里云上的Redis(集群版迁移)

基于Redis-port实现阿里云上的Redis(集群版迁移)

上一篇:Hacker-基础学习(1)


下一篇:Tomcat下conf下server.xml的文件配置信息