redis的备份方案我使用过的有两个,第一个是原生redis的备份方案,第二个方案是使用可视化的yunedit-redis来做备份。
先来说redis原生的备份方案,原生的方案是整个rdb备份,整个文件拷贝,然后去替换目标redis的整个文件。但是这样有一个问题。
最大的问题是数据会被刷掉的问题,两个redis的数据不一定是覆盖的关系,有可能redis A迁移到redis B 后,原来redis B 的数据还想保留,这样使用rdb文件备份就不太可行了。
第二个问题是灵活性的问题,假如是rdb文件拷贝,这样要求备份的用户有两台redis的宿主机服务器的访问权限。但是实际上,想做数据迁移的人,往往只有redis权限,并没有redis的宿主机服务器的权限。备份起来就非常不方便了。
因此,这里我推荐是使用yunedit-redis来做redis的数据备份或数据迁移。
它是类似于备份sql文件的方式来做备份,首先将数据导出到本地文件系统,mysql将sql语句导出的这种方式,然后它的导入可以选择导入到redis A,也可以导入到redis B,而且导入后,并不会删除目标redis的其他key。
它的数据导出和导入界面大概如下:
当然,你也要确定两个redis的集群模式是一致的才行。
因为一般单机版或主从版的redis,是有16个逻辑上的db的(默认不选db的话,数据是保存在db0),而集群版的redis是只有一个db的,假如你将单机版的redis,迁移到集群版的redis,可能会出现其他db的数据丢失的问题。