前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 的几种数据导入导出方式

Redis 的几种数据导入导出方式

作者头像
jwangkun
发布2021-12-23 17:54:53
5.2K0
发布2021-12-23 17:54:53
举报
文章被收录于专栏:John Wong's BlogJohn Wong's Blog

环境说明:

202.102.221.11 redis 源实例

202.102.221.12 redis 目标实例

202.102.221.13 任意 linux 系统

一、redis-dump 方式

  1. 安装 redis-dump 工具
代码语言:javascript
复制
[root@202.102.221.13 ~]# yum install ruby rubygems ruby-devel -y

更改gem源

代码语言:javascript
复制
[root@202.102.221.13 ~]# gem sources -a http://ruby.taobao.org
Error fetching http://ruby.taobao.org:
bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
  访问http://ruby.taobao.org,公告通知镜像维护站点已迁往Ruby China镜像

#gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
[root@202.102.221.13 ~]# gem sources --add http://gems.ruby-china.org/ --remove http://rubygems.org/
http://gems.ruby-china.org/ added to sources
source http://rubygems.org/ not present in cache
[root@202.102.221.13 ~]# gem sources -l
*** CURRENT SOURCES ***

http://gems.ruby-china.org/
[root@202.102.221.13 ~]# gem install redis-dump -V

2.redis-dump 导出

代码语言:javascript
复制
[root@202.102.221.13 ~]# redis-dump -u :password@202.102.221.11:6379 > 202.102.221.11.json

3.redis-load 导入

代码语言:javascript
复制
[root@202.102.221.13 ~]# cat 202.102.221.11.json | redis-load -u :password@202.102.221.12:6379

二、aof 导入方式

  1. 源实例生成 aof 数据

清空上文目标实例全部数据

root@202.102.221.11 ~# redis-cli -h 202.102.221.12 -a password flushall

OK

源实例开启aof功能,将在dir目录下生成appendonly.aof文件

代码语言:javascript
复制
[root@202.102.221.11 ~]# redis-cli -h 202.102.221.11 -a password config set appendonly yes
OK
  1. 目标实例导入 aof 数据

假设appendonly.aof就在当前路径下

代码语言:javascript
复制
[root@202.102.221.11 ~]# redis-cli -h 202.102.221.12 -a password --pipe < appendonly.aof
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 5

源实例关闭aof功能

代码语言:javascript
复制
[root@202.102.221.11 ~]# redis-cli -h 202.102.221.11 -a password config set appendonly no
OK

三、rdb 文件迁移方式

(1)关闭要迁移到的服务器的 redis 的 aof 日志功能(我的要迁移到的是本机的 redis6380.conf)

vim redis6380.conf,将 appendonly yes 修改为 appendonly no

(2)我们先看一下当前 redis 的数据,并将数据用 save 命令固化到 rdb 文件中,我的 rdb 文件为 / var/rdb/dump6379.rdb

(3)杀掉当前 redis 的进程,否则下一步的复制 rdb 文件,rdb 处于打开的状态,复制的文件,会占用同样的句柄

(4)复制当前 redis 的 rdb 文件,名字为你要迁移的 redis 的 rdb 文件名(我的要迁移的 redis 的文件名为 /var/rdb/dump6380.rdb),记住,一定要杀掉当前 redis 的进程,还有关闭要迁移的服务器的 aof 功能(如果不关闭 aof,默认用 aof 文件来恢复数据)

(5)启动 6380 的 redis,我们会发现,6380 多出了 name 的数据,这个数据,就是 6379 固化到 rdb 的数据

以上就是在不同的 redis 之间进行 rdb 的数据迁移,思路就是,复制 rdb 文件,然后让要迁移的 redis 加载这个 rdb 文件就 ok 了

四、源实例 db0 迁移至目标实例 db1

代码语言:javascript
复制
[root@202.102.221.11 ~]# cat redis_mv.sh
代码语言:javascript
复制
#!/bin/bash
redis-cli -h 202.102.221.11 -p 6379 -a password -n 0 keys "*" | while read key
do
redis-cli -h 202.102.221.11 -p 6379 -a password -n 0 --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h 202.102.221.12 -p 6379 -a password -n 1 -x restore $key 0
echo "migrate key $key"
done

下一篇: Docker安装单机ElasticSearch→

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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