请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

rdb与aof以及redis主从读写分离相关问题

问题1:
RDB保存数据是通过将父进程的内存数据共享给子进程,然后自己将其dump到磁盘,然后每次都是采用的全量备份; 这么理解对吗?

问题2
AOF属于追加数据到文件中,那么他采用的是全量备份,还是增量备份呢;

问题3

  • 3.AOF和DUMp同时存储,而DUMP中有完整数据,AOF中没有数据,redis起来后数据全丢,然后做了如下操作,所以数据彻底没有了?
[root@node1 ~]# ll /usr/local/redis/data/
总用量 76932
-rw-r--r-- 1 root root        0 6月  22 14:43 appendonly.aof
-rw-r--r-- 1 root root 78777939 6月  22 14:43 dump.rdb
[root@node1 ~]#
[root@node1 ~]# rm -f /usr/local/redis/data/appendonly.aof
[root@node1 ~]#
[root@node1 ~]# systemctl restart redis

[root@node1 ~]# ll /usr/local/redis/data/
总用量 4
-rw-r--r-- 1 root root  0 6月  22 14:45 appendonly.aof
-rw-r--r-- 1 root root 92 6月  22 14:45 dump.rdb
  • 我的理解:
    * 1.由于aof没有数据,重启redis会优先加载aof,而aof参数刚配置,没有数据,所以造成redis没有恢复数据;
    * 2.然后将aof删除后又重启redis、当我执行save后,就将空的覆盖了存在 数据 的dump.rdb文件;所以误操作将数据删除了;
    • 提问:那么老师,如果是这种情况,我该如何恢复最佳呢、、、、然后像这种rdb可以通过 命令来恢复吗,还是说只能重启让redis进程自己 加载目录的中 配置;

问题4:主从复制读写分离如何实现;

  • 是否需要在程序中配置一个读写IP。然后在配置一个只读ip列表,实现读写分离吗?
  • 如果是这样,是不是可以通过 lvs、ha、nginx等 来实现四层读实例的负载均衡,对外提供一个IP地址;
  • 或者我的理解不对
    • 1、直接将多个IP配置到 程序中,然后无法往从服务器写,自动跳转 到 主服务器 ,那如果 这样,岂不是需要浪费重写时间 ;
    • 2、还请老师指点一下,这块实现起来不知道怎么算最佳方案 ;

正在回答 回答被采纳积分+3

1回答

InCowboy 2021-06-29 09:23:00

1、RDB是将数据全部备份到了磁盘,这种理解是对的。

2、AOF是记录所有增删改的操作指令在保存到日志文件中,它是采取追加的方式写入的。理论上AOF比RDB记录的更完整,因为AOF是实时更新,而RDB是根据配置的频率更新的。

3、RDB和AOF都开启时,会优先从AOF同步数据,因此你会看到你的操作结果是空的,你的理解是对的。

4、主从复制读写分离,不需要这么复杂,首先从Redis服务端出发,配置主从,然后从节点设置成只读;然后客户端分主服务实例和从服务器实例,主服务器实例负责写,从服务器实例负责读,如果你是使用Java的SpringBoot的话,后面会有介绍,其他语言要去参考一下他们客户端的API了,后面还要考虑哨兵机制哈

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号