redis 查看当前连接ip_Redis学习 复制以及三种部署模式

什么是复制

单机的redis通常情况是无法满足项目需求的,一般都建议使用集群部署的方式进行数据的多机备份和部署,这样既可以保证数据安全,同时在redis宕机的时候,复制也可以对于数据进行快速的修复。

采取的方式

  1. 单机部署(忽略)

  2. 主从链

  3. 一主多从

  4. 哨兵模式

  5. 集群模式

复制的前提

  1. 需要保证redis.conf里面的配置是正确的,比如:

 dir ./dbfilename "dump.rdb"
  1. 需要保证指定的路径对于redis来说是可写的,意味着如果当前目录没有写权限同样会失败

从服务器连接主服务器的几种方式

  1. 在从服务器的配置文件里面配置连接那个主服务器:

连接的具体配置如下:

在5.0版本中使用了replicaof代替了slaveof(github.com/antirez/red…),slaveof还可以继续使用,不过建议使用replicaof

下面是个人的配置

 # replicaof replicaof 127.0.0.1 16379

警告:此小节只说明了这一个配置的更改,进行主从配置的时候还有其他几个参数需要更改,这里只作为部分内容参考

  1. 在启动的时候,在redis从服务器的redis-cli当中敲击如下的命令:

 127.0.0.1:16380> slaveof 127.0.0.1 16379OK Already connected to specified master

这样就可以在从服务器动态的指定要连接哪个主服务器了,但是这种配置是当前运行时有效,下次再次进入的时候,会根据配置文件进行配置或者按照默认的规则当前实例就是master3.

  1. 在从服务器执行slaveof no one,当前实例脱离控制自动成为master

redis 复制启动的过程(重点)

主服务器操作 从服务器操作
1. (等待命令) 1. 连接(重新连接)主服务器,发送sync命令
2. 开始执行bgsave,使用缓冲区记录bgsave之后执行所有写命令 2. 根据配置选项是使用现有的数据(存在)处理客户端请求,还是向请求的客户端返回错误信息
3. bgsave执行完毕,向从服务器发送快照文件,同时异步执行缓冲区记录的写命令 3. 丢弃所有的旧数据,载入主服务器的快照文件
4.  快照文件发送完毕,开始向着从服务器发送存储在缓冲区的写命令 4. 完成对于快照的解释操作,恢复日常的请求操作
5. 缓冲区写命令发送完成,同时现在每执行一个写命令就像从服务器发送相同写命令 5. 执行主服务器发来的所有存储在缓冲区的写命令,并且从现在开始接受主服务器的每一个命令

建议:由于bgsave需要开启进行子线程的创建写入缓冲区的创建,所以最好在系统中预留30% - 45% 内存用于redis的bgsave操作

特别注意:当从服务器连接主服务器的那一刻,执行到第三步会清空当前redis里面的所有数据。

配置方式和命令方式的区别:

redis.conf 配置slaveof 的方式:不会马上进行主服务器同步,而是先载入当前本地存在的rdb或者aof到redis中进行数据恢复,然后才开始同步复制

命令slaveof方式:会立即连接主服务器进行同步操作

关于redis的主主复制:

如果我们尝试让两台服务器互相slaveof 那么会出现上面情况呢?

从上面的复制过程可以看到,当一个服务器slaveof另一个服务器,产生的结果只会是两边相互覆盖,也就是从服务器会去同步主服务器的数据,如果此时按照主主的配置,两边互相同步对方的数据,这样产生的数据可能会不一致,或者数据干脆就是不完整的。不仅如此,这种操作还会大量占用资源区让两台服务器互相知道对方

当一台服务器连接另一台服务器的时候会发生什么?

当有新服务器连接的时候 主服务器操作
步骤3还没有执行 所有从服务器都会收到相同的快照文件和相同缓冲区写命令
步骤3正在执行或者已经执行 完成了之前同步的五个操作之后,会跟新服务器重新执行一次新的五个步骤

系统故障处理

复制和持久化虽然已经基本可以保证系统的数据安全,但是总有意外的情况,比如突然断电断网,系统磁盘故障,服务器宕机等一系列情况,那么会出现各种莫名奇妙的问题,下面针对这些情况说明一下解决方式:

验证快照文件以及aof文件

在redis的bin目录下面,存在如下的两个sh

 -rwxr-xr-x 1 root root 9722168 Nov 15 20:53 redis-check-aof-rwxr-xr-x 1 root root 9722168 Nov 15 20:53 redis-check-rdb

他们的命令作用和内容如下:

 [xd@iZwz99gyct1a1rh6iblyucZ bin]$ ./redis-check-aof Usage: ./redis-check-aof [--fix] [xd@iZwz99gyct1a1rh6iblyucZ bin]$ ./redis-check-rdb Usage: ./redis-check-rdb 

redis-check-aof:如果加入--fix选项,那么命令会尝试修复aof文件,会将内容里面出现错误的命令以及下面的所有命令清空,一般情况下会清空尾部的一些未完成命令。

redis-check-rdb:遗憾的是目前这种修复收效甚微。建议在修复rdb的时候,用SHA1和SHA256验证文件是否完整。

校验和与散列值:

redis2.6 之后加入了校验和与散列值进行验证。

快照文件增加CRC64校验和

什么是crc循环冗余校验

https://zh.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97

更换故障主服务器:

  1. 假设A故障,存在BC两台机器,B为从服务,C为将要替换的主服务器

  2. 向机器B发送save命令,同时创建一个新的快照文件,同步完成之后,发送给C

  3. 机器C上面启动redis,让C成为B的主服务器

Redis sentienel 哨兵

可以监视指定主服务器以及属下的从服务器

也就是我们常用的哨兵模式

但是随着时代进步,目前使用redis基本还是以cluster模式为主

redis主从复制模式(redis6.0版本):

前提说明:

有条件的可以弄三台虚拟机查看效果,这样模拟出来的效果算是比较真实的。

三台从服务器以及一台主服务器的配置

个人的办法是copy一个公用的配置,然后进行修改(这里只列举区别以及改动较多的地方,其他地方根据需要配置):

第一台机器的配置:

 pidfile /var/run/redi
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值