redis主从与mysql主从不同的是:redis不需要事先吧数据同步过去,配置好后,以前的数据直接会同步。
首先在linux系统上下载redis,分别创建这些文件:
6379.log dump-6379.rdb 6380.log dump-6380.rdb 6381.log dump-6381.rdb
之后再config目录下创建:
分别创建一主双从,里面的配置如下:
分别表示:logfile(日志的路径)
daemonize(守护线程开启)
rdbcompression(缓存开启)
dbfilename(缓存存放文件名)
主的:
bind 0.0.0.0
port 6379
logfile "6379.log"
dbfilename "dump-6379.rdb"
daemonize yes
rdbcompression yes
从的:
bind 0.0.0.0
port 6380
logfile "6380.log"
dbfilename "dump-6380.rdb"
daemonize yes
rdbcompression yes
slaveof 127.0.0.1 6379
启动命令用./redis-server config/slave-6381.conf
和./redis-server config/master-6739.conf
启动后用ps -rf|grep redis可以看到如下效果:
接下来测试一下:
启动主服务器:./redis-cli -p 6378
退出之后启动从服务器:./redis-cli -p 6380,如图可以看到从服务器只可以读,不可以写入
接下来加入sentinel(哨兵):
加入配置文件sentinel_6379.conf,sentinel_6380.conf,sentinel_6381.conf
sentinel monitor:代表监控,master代表服务器名称,可以自定义,127.0.0.1代表监控的主服务器,6379代表端口,2代表有两个或者以上的哨兵认为主服务不可以用时候才可以failover。
down-after-milliseconds:制定master 30000mm没有反应则表示主服务不可用。
parallel-syncs:表示主从切换的时候只有 1个slave可以切换。
主:
port 6379
daemonize yes
logfile "/usr/redis/sentinel_6379.log"
sentinel monitor master 127.0.0.1 6379 2
sentinel down-after-milliseconds master 30000
sentinel parallel-syncs master 1
sentinel failover-timeout master 180000
从:
port 6380
daemonize yes
logfile "/usr/redis/sentinel_6380.log"
sentinel monitor master 127.0.0.1 6379 2
sentinel down-after-milliseconds master 30000
sentinel parallel-syncs master 1
sentinel failover-timeout master 180000
启动sentinel用:./redis-server sentinel_6379.conf --sentinel
注意:启动顺序是先启动主redis进程,在启动从redis进程,最后在启动三个哨兵进程。