在复制的概念中,数据库分为两类,一类是主数据库(master),另一类是从数据库(slave)。主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。
在redis中配置主从非常简单,只需修改配置文件即可,主数据库无需进行任何配置。
第一个参数配置主数据库的ip,端口,第二个参数是主数据库的密码。
info replication 查看replication的信息
默认情况下从数据库是只读的,不能直接修改数据。可以设置从数据库配置文件的slave-read-only为no以使数据库可写。但通常情况下不应该设置从数据库可写。
如果改数据库已经是其他主数据库的从数据库了,slaveof命令会停止和原来数据库的同步转而和新数据库同步。还可以使用salveof no one命令来使当前数据库停止接收其他数据库的同步并转换成为主数据库。
2.哨兵
哨兵的作用就是监控Redis系统的运行状况。它的功能主要是2个:
(1)监控主数据库和从数据库是否正常运行。
(2)主数据库出现故障时自动将从数据库转换为主数据库。
配置哨兵。建立一个配置文件,如sentinel.conf,内容为:
sentinel monitor mymaster 127.0.0.1 6379 1
sentinel auth-pass mymaster 123456
其中mymaster表示要监控的主数据库的名字,可以自己定义一个。这个名字必须仅由大小写字母、数字、“.-_”这3个字符组成。后两个参数表示主数据库的地址和端口号。最后的1表示最低通过票数,quorum参数。auth-pass配置主数据库的密码。
启动哨兵
redis-sentinel sentinel.conf 通过配置文件启动
一个哨兵可以同时监控多个Redis主从系统,只需要提供多个sentinel monitor配置即可。
同时多个哨兵节点也可以同时监控同一个Redis主从系统,从而形成网状结构。
哨兵和主数据库建立完成后,会执行下面3个操作:
(1)每10秒哨兵会向主数据库和从数据库发送info命令。
(2)每2秒哨兵会向主数据库和从数据库的_sentinel_:hello频道发送自己的信息。
(3)每1秒哨兵会向主数据库、从数据库和其他哨兵节点发送ping命令。
时间间隔与down-after-milliseconds选项有关,当down-after-milliseconds的值小于1秒时,哨兵会按照指定时间发送一次ping命令,当大于1秒时,每隔一秒发送一次ping命令。
主观下线:当超过down-after-milliseconds选项指定时间后,如果被ping的数据库或节点任然未进行回复,则哨兵认为其主观下线。
客观下线:主观下线表示从当前的哨兵进程看来,该节点已经下线。如果该节点是主数据库,则哨兵会进一步判断是否需要对其进行故障恢复,哨兵发送sentinel is-master-down-by-addr 命令询问其他哨兵节点以了解他们是否也认为该主数据库主观下线,如果达到指定数量时,哨兵会认为其客观下线,并选举领头的哨兵节点对主从系统发起故障恢复。这个指定的数量是配置文件的quorum参数。