(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
一仆二主 :
一个主机两个从机,当主机重启那么两个从机地位不变 ,原地待命,主机重启完之后继续做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
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