Redis数据库备份、迁移、恢复实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis数据库备份、迁移、恢复实践相关的知识,希望对你有一定的参考价值。

参考技术A 描述: 当我们需要备份或迁移Redis集群时可以采用以下方案。

第三方redis集群数据迁移工具项目参考( https://github.com/alibaba/RedisShake )

描述:在系统删除了配置文件后以及用户账号后恢复方法流程,实际环境中建议利用rdb文件进行重新部署。

2.Kubernetes中单实例异常数据迁移恢复实践
方案1.利用其他kubernetes集群进行恢复原k8s集群的redis数据。

命令执行示例:

Tips : 从上述恢复结果可以看出以aof方式恢复的数据比rdb恢复的数据完整,但所加载的时间会随着数据增大会使得AOF方式耗时比rdb耗时更多。

方案2.利用宿主机安装编译redis源码,进行恢复原k8s集群的redis数据

方案3.利用Kubernetes部署的Redis集群,进行恢复原k8s集群的redis数据

Tips : 若id没发生变化,直接重启下该从节点就能解决。

Redis数据的导出和导入:dump和load方式
https://www.jianshu.com/p/03da3b9774d8

redis 数据迁移

1. rdb数据备份恢复方法

redis 127.0.0.1:6379> SAVE

redis-cli -h 127.0.0.1 -p 6379 -a pwd bgsave
该命令将在 redis 安装目录中创建dump.rdb文件。

查找dump.rdb文件位置
redis 127.0.0.1:6379> CONFIG GET dir

  1. “dir”
  2. “/usr/local/redis/bin”
    以上命令输出的 redis 安装目录为 /usr/local/redis/bin。
    创建 redis 备份文件也可用命令 BGSAVE,该命令在后台执行。
    127.0.0.1:6379> BGSAVE
    Background saving started

2. AOF数据备份恢复方法

在配置文件中打开[appendonly yes]。AOF刷新日志到disk的规则:

  • appendfsync always # 每次有写操作都进行同步,非常慢,非常安全。
  • appendfsync everysec # 对写操作进行累积,每秒同步一次
    官方的建议的everysec,安全,就是速度不够快,如果是机器出现问题可能会丢失1秒的数据。

也可手动执行bgrewriteaof进行AOF备份:
redis-cli -h 127.0.0.1 -p 6379 -a pwd bgrewriteaof

迁移数据恢复
迁移到另外一台恢复数据,需先检查配置文件,将按照以下优先级恢复数据到内存:

  • 如果只配置AOF,重启时加载AOF文件恢复数据;
  • 如果同时 配置RBD和AOF,启动是只加载AOF文件恢复数据;
  • 如果只配置RBD,启动是加载dump文件恢复数据;

dump.rdb或AOF文件迁移到另外一台恢复数据
恢复数据,只需将备份文件 (dump.rdb或者AOF文件) 移动到 redis 安装目录并启动服务即可。

3. 挂redis从库复制数据方法

Redis提供复制(replication)功能可以自动实现同步的过程。配置方法:

  • 配置文件:slave的配置文件中加入slaveof ip port,主数据库无需配置.
  • 命令行参数: 启动redis-server时,用命令行参数 slaveof ip port

redis-server –port 6380 –slaveof 127.0.0.1 6379
通过命令SLAVEOF master-ip master-port
redis>SLAVEOF 127.0.0.1 6379
SLAVEOF NO ONE可以是当前数据库停止接收其他数据库的同步,转成主Redis数据库,程序连接地址都改为新的redis库IP地址和端口。

建议:采用第三个方法迁移数据。
















以上是关于Redis数据库备份、迁移、恢复实践的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB迁移的那些事:冷备份+增量备份恢复

ELK数据备份,迁移及恢复

Gitlab---代码库备份的迁移与数据恢复

Redis 数据备份与恢复

Docker 备份恢复迁移数据卷

Redis 数据备份与恢复