跨服务器迁移 Redis 数据可以通过以下几种方法实现:
-
使用
redis-cli
工具进行数据导出和导入:- 先从源 Redis 服务器导出数据。
- 然后将数据导入到目标 Redis 服务器。
-
使用
rdb
文件:- 将源 Redis 服务器的
dump.rdb
文件拷贝到目标服务器,然后重启 Redis 服务。
- 将源 Redis 服务器的
-
使用
redis-shake
工具:redis-shake
是一个 Redis 数据同步工具,支持全量和增量同步。
这里主要介绍前两种方法,第三种方法需要安装和配置 redis-shake
,可以参考官方文档。
方法一:使用 redis-cli
工具
导出数据
首先,在源 Redis 服务器上使用 redis-cli
工具导出数据到文件:
bash
redis-cli --rdb dump.rdb
这将会在当前目录生成一个 dump.rdb
文件。
传输文件
将 dump.rdb
文件传输到目标 Redis 服务器。你可以使用 scp
命令或其他文件传输工具。
bash
scp dump.rdb user@destination_server:/path/to/redis
导入数据
在目标 Redis 服务器上,将 dump.rdb
文件放置到 Redis 数据目录,然后重启 Redis 服务:
bash
sudo mv dump.rdb /var/lib/redis/
sudo systemctl restart redis
这样,目标 Redis 服务器就会加载 dump.rdb
文件中的数据。
方法二:使用 redis-cli
进行数据导入和导出
导出数据
在源 Redis 服务器上使用 redis-cli
导出数据,并通过管道传输到目标 Redis 服务器:
bash
redis-cli --rdb - | ssh user@destination_server "cat > /path/to/redis/dump.rdb"
导入数据
在目标 Redis 服务器上,将 dump.rdb
文件放置到 Redis 数据目录,然后重启 Redis 服务:
bash
sudo mv dump.rdb /var/lib/redis/
sudo systemctl restart redis
方法三:使用 redis-shake
redis-shake
是由阿里巴巴开发的 Redis 数据迁移和同步工具,支持全量和增量同步。它的使用涉及到更复杂的配置,但它能够在不停机的情况下实现实时同步。
安装 redis-shake
下载并解压 redis-shake
:
bash
wget https://github.com/alibaba/RedisShake/releases/download/release-v2.0.5/redis-shake-v2.0.5.tar.gz
tar -zxvf redis-shake-v2.0.5.tar.gz
cd redis-shake-v2.0.5
配置 redis-shake
编辑配置文件 redis-shake.conf
,设置源 Redis 和目标 Redis 的相关信息:
ini
# 源 Redis 地址
source.address = 127.0.0.1:6379
source.password_raw = ""
# 目标 Redis 地址
target.address = 192.168.0.2:6379
target.password_raw = ""
# 其他配置项根据需要进行设置
运行 redis-shake
使用以下命令启动数据迁移:
bash
./redis-shake sync
这样,redis-shake
将会开始同步源 Redis 和目标 Redis 之间的数据。
总结
上述方法中,使用 redis-cli
工具进行数据导出和导入是较为简单和常用的方式,适合小规模数据迁移;而 redis-shake
工具适合大规模数据迁移和实时同步。如果对停机时间要求不高,可以选择前两种方法;如果需要在线迁移,则推荐使用 redis-shake
。