redis主从复制
单机配置从库需要修改的东西
1.拷贝多个redis.conf
2.开启 daemonize yes
3.pid文件名字
4.指定端口号
5.log文件名字
6.dump.rdb名字
集群多一项配置:
cluster-config-file nodes-*.conf
小规律
info 查看当前主从状态
1.配从(库)不配主(库)
2.从库配置:salveof 主库ip 主库端口(可以在redis中配置,也可以在配置文件中配置)
4.读写分离(slave只能读)
5.在非哨兵模式下,当master宕机之后,从服务器会等待主服务器重启,当从服务器宕机之后,需要从服务器重新连接
6.在非哨兵模式下,当master宕机之后,从机不会自动变为master。
7.首次是全量复制,之后是增量复制
8.常用的:
一主二从
一个master 两个salve
薪火相传
上一个slave可以使下一个salve的master,slave同样可以接受其他的slave的连接和同步请求,那么该slave作为了链条中下一个master,可以有效减轻master的写压力(即同时为主从的主机,可以写入) 中途变更专项,会清除之前的数据,重新建立并拷贝最新的数据
反客为主
命令 salveof no one
使当前数据库停止与其他数据库的同步,转成主数据库(当原master重启成功之后,不会加入主从序列中)
哨兵模式(反可为主的自动版)
使用投票的方法选举新的master(当原master重启成功之后,会加入主从序列中,成为slave)
使用方法
1.新建sentine1.conf
2.sentinel monitor 被监控数据库名字(自己起的)127.0.0.1 6379 1
3.启动哨兵进程
./redis-sentinel
../sentinel.conf
1 表示最小得票数,否则直接忽略(谁票数多谁上位,如果票数一样,重新选,多次票数一样之后,随机选一个当master)
主从复制的缺点:slave复制会有延迟(因为都写在master,网络,从机数量都会加大延迟)
主从复制原理:
1.slave启动成功连接到master后会发送一个sync命令(6.0版本之后发送psync)
2.master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改的数据集命令在后台进程执行完毕之后,master将传送整个数据文件到salve,以完成一次完全同步
3.全量复制:当slave服务在接收到数据库文件后,将其存盘并加载到内存中
4.增量复制: master继续将新的所有收集到的修改命令依次传给slave,完成同步
5.只要是重新连接master,一次完全同步(全量复制)将被自动执行