复制的原理:
- 全量:当从库连接master时,master启动一个新的进程并收集所有的数据发送给slave。
- 增量:master继续将新的所有数据库中的数据依次的传给slave,完成同步。
配置一主二从的步骤
- 启动主库
- 查看主库 info replication
- 启动从库
- 查看从库的配置信息 info replication
- 使用slaveof命令配置从库
两个从库都是用:slaveof 127.0.0.1.6379(主库IP+端口) - 查看从库的配置
- 对master进行写操作,对slave进行读操作
- 如果master执行shutdown之后,slave的状态依旧保持,也只能读不能写,如果这是master启动之后,master和slaver有能重新连上,但中间会有一定的延迟不是马上。
第二种配置方式:薪火相传
-
启动主库
-
查看主库 info replication
-
启动从库
-
查看从库的配置信息 info replication
-
使用slaveof命令配置从库
第一个从库用:slaveof 127.0.0.1.6379(主库IP+端口)
第二个从库用:slaveof 127.0.0.1 6380(ip+端口) -
查看从库的配置
-
对master进行写操作,对slave进行读操作
注意: -
如果只是slave执行shutdown重新启动的时候会出现NOAUTH Authentication required.这个错误。
解决方法:输入你设置的密码即可 auth password
特点: -
一旦其中中间的slaver执行了shutdown,那么所有的联系就都断了,每一个都会成为master.(这种情况出现的时候是在配置文件中没有配置的情况下,如果配置了的话,重启后自动连上),配置如下:
第三种方式:反客为主
简单来说:就是master执行shutdown之后,会选择一个slave来担当master,其中可能会涉及一些选择的规则。
步骤:
-
启动主库
-
查看主库 info replication
-
启动从库
-
查看从库的配置信息 info replication
-
使用slaveof命令配置从库
两个从库都是用:slaveof 127.0.0.1.6379(主库IP+端口) -
查看从库的配置:主库关闭时,第一个从库执行slaveof no one 断开后,第二个从库使用slaveof 127.0.0.1.6380连接。
-
master再启动时使用slaveof连接6380,使他自己变为从库。当原来的master启动后如果这时现有的master中含有的数据比原有的master中的数据多时,这时原来的master就会变为slave.
总结: -
如果想要在shutdown之后在启动时自动连接原来的master,这时需要在配置文件中进行配置。
-
配置一主二从:
如果是3的版本:slaveof 127.0.0.1 6379 redis6380.conf
slaveof 127.0.0.1 6379 redis6381.conf
如果是5的版本: replicaof 127.0.0.1 6379 redis6380.conf
replicaof 127.0.0.1 6379 redis6381.conf
哨兵模式就是反客为主的自动版
重启一个线程自动监控。
哨兵模式的搭建: -
在etc目录下新建sentinel.conf文件(路径可以不一样,但文件名必须相同)
-
在这个文件中增加sentinel monitor 被监控的数据库名字(例如 master6379 127.0.0.1 6379 1)最后的1代表多少个从机认为下线主机下线开始投票
-
启动哨兵 redis-sentinel /etc/sentinel.conf
-启动主机及从机
启动redis后,主机挂掉后,从机上位。