集群的作用: 1.主从备份,防止主机宕机 2.读写分离,主服务器写,从服务器内容跟着主服务器,主服务器变他就变,读就从从服务器读。减轻主服务器的负担。 3.任务分离,比如消耗cpu和内存的操作,交给从服务器。 Redis功能强大操作简洁。主从集群的配置比mysql要简单很多。
第一种的坏处是,主down了,要把slave1变成master,并且还要把slave2指向skave1。
第二种的好处是,主down了,只要把slave1变成master就可以了。
Slave一启动发现有一个master,就会自动的连过去,然后开始同步,master开始dump出rdb这个内存镜像给slave,在dump出rdb的过程中有新的命令过来就会缓存到aof里面,dump完了之后就把aof的缓冲同步过来。之后只要master变了就会通过replicationFeedSlaves进程通知slave来更新。
6379做主master,6378,6377做slave, (redis的版本要一致) Pkill -9 redis //杀掉所有的进程 星型的布局: 1个Master配置: 1:关闭rdb快照(备份工作交给slave),把耗时的io操作交给从服务器。(也可以打开防止同步失败,只是消耗cpu和内存) 2:可以开启aof(防止同步失败,只是消耗cpu和内存) 2个slave配置: 打开 slaveof <masterip> <masterport>:slaveof 127.0.0.1 6379 //2个slave都指向一个master linux上面要各使各的pid文件(winsows没有) pidfile /var/run/redis6377.pid pidfile /var/run/redis6378.pid pidfile /var/run/redis6379.pid slave-read-only yes //只读状态 1: 声明slave-of 2: 配置密码[如果master有密码]: 主需要# requirepass foobared,从加密码# masterauth <master-password> 3: [某1个]slave打开 rdb快照功能 这样主从服务器就配置好了。 往从服务器写是不行的,是readonly的。 缺陷: 每次salave断开后,(无论是主动断开,还是网络故障) 再连接master 都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍. 所以要记住---多台slave不要一下都启动起来,否则master可能IO剧增。甚至可以把redis拖垮。