(master/slave)主从复制模式:主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主,slave只读模式,不可以写入操作。

操作:slaveof 主库ip  主库端口         配置从库

           slaveof no one     使当前数据库停止与其他数据库的同步,转成主数据库

           sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1

           redis-sentinel /myredis/sentinel.conf 

一仆二主  :

redission clinet 优雅停机_持久化

一个主机两个从机,当主机重启那么两个从机地位不变 ,原地待命,主机重启完之后继续做master,从机能共享主机上的所有的数据,如果主机down掉那么从机上还有数据,这就是主从复制的意义。从机shutdowm后,每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件,主机用来写入数据,从机不能直接写入数据,只能读取数据,,这就是读写分离。

薪火相传

反客为主:一个主机两个从机,主机down掉之后,两个从机很听话会乖乖不动,如果在其中一个从机中输入slaveof no one 那么这个从机会变成主机,另外一个从机我们手动指向这个刚刚变成的主机,这样他们两个成为一个主从结构,当down的主机重启之后也是master只不过这个主机与上个主机之间没有任何联系了

复制原理:slave启动连接master成功后会发送一条sync命令,master接受的命令会开启一个后台rdb持久化进程,同时收集所有的的增删改指令,进行aof持久化,在持久化进程结束之后,master将整个数据文件传送到slave,已完成一次完全同步。

全量复制:而slave服务器在接受到数据库文件数据后,将数据存盘并加载 到内存中。

增量复制:master继续将新的所有收集到的修改 命令依次传给slave,完成同步

但是只要重新连接   完全复制将被执行

 

哨兵机制sentinel:哨兵机制就是反客为主的自动化模式

新建一个sentinel.conf文件          sentinel monitor host127.0.0.1 6379 1

sentinel-server sentinel.conf

redission clinet 优雅停机_持久化_02

 

redis持久化:

rdb是将内存中的redis数据按照一定的时间间隔写入磁盘,也就是snapshot快照,它恢复时是将文件直接读到内存里,

主程序会fork一个进程来进行持久化,会先将数据写入到一个临时文件里,等持久化完成会将临时文件替换上传持久化生成的文件,整个过程中主进程不进行任何io操作,如果是对数据的完整性和一致性要求不高的,而且是大规模的数据  那么rdb要比aof更加合适。

aof是将redis的写操作按照配置文件设置的方式以日志的形式写入磁盘中  只能追加  不能修改   当到达设置的阈值,就会rewrite

当redis重启时会先寻找aof文件进行恢复。

redis会先找到aof进行恢复

 

配置主从复制的方法

第一种:

先打开6379的redis然后使用redis-server --port 6380 --slaveof 127.0.0.1 6379 直接开启6380端口 并且关系自动就是6380是slave6379是master 

打开客户端  使用redis-cli -p 6379     或者是 redis-cli -p 6380   使用info replication  查看

第二种

同样先开启6379端口  然后开启   redis-server --port 6380 端口

redis-cli -p 6380

redis-cli -p 6379

链接两个客户端

在客户端中 使用slaveof  host port

第三种 配置文件的方法

新建一个redis6380.conf文件 1. port 改成 6380  2.  logfile '6380.log'    3.   slaveof  127.0.0.1

redis-server redis6380.conf   运行  然后使用  redis-cli -p 6380