先说下环境,两台服务器,一台服务器上面启动一个master,另一台上面启动两个slave端口号分别为6379和6380(没那么多服务器!)。
master配置:关闭rdb(备份工作让slave去做),开启aof
slave配置:slave开启rdb,aof都关闭
三台redis的slave-read-only都用默认的,当redis作为slave的时候只能读不能写
slave-read-only yes
1、首先修改master配置(“#”为注释)
1)、让master后台运行
daemonize yes
2)、让外网可访问
#bind 127.0.0.1
protected-mode no
3)、关闭rdb、开启aof
appendonly yes
#save 900 1
#save 300 10
#save 60 10000
2、修改第一台slave配置
1)、后台运行
2)、外网可访问
3)、开启rdb、关闭aof
appendonly no
save 900 1
save 300 10
save 60 10000
4)、配置成从服务器
slaveof 47.101.32.189 6379
3、复制出第二台slave
楼主这里并不是只复制了配置文件,直接把整个安装后的redis文件夹都复制了。
如果是在安装好后的redis目录内直接复制的配置文件,那么需要改动复制出来的配置文件的以下配置
下面两种颜色的配置选择性的改一种或者都改
dir ./(不能相同)
dbfilename dump.rdb(不能相同)
appendfilename "appendonly.aof"(不能相同)
然后无论是只复制了配置文件还是复制了整个文件夹,都需要做以下更改(这里表示不确定!!!)
pidfile /var/run/redis_6379.pid(不能相同)第二台slave改成了pidfile /var/run/redis_6380.pid
1)、修改端口
port 6380
2)、后台运行
3)、外网可访问
4)、开启rdb、关闭aof
5)、配置成从服务器
4、依次启动master和slave
启动完成依次连接后输入info replication查看情况
master
slave(6379)
slave2(6380)
5、测试
master
slave(6379)
slave(6380)
slave不可写
关于设置连接密码的在下一篇文章有讲到
有不正确的地方还望指出!
补充一点点小细节:
1、这里我们关闭了master的rdb,按理说是不会生成有dump.rdb文件的。
每当有slave连接master的时候,master和slave都会生成一份dump.rdb文件。
2、如果把某台slave的slave-read-only设置成no(从服务器可写),会导致只有该slave可以读取到写进去的数据,其他slave和master均服务读取到该salve写的数据。将该slave停止后,重启,该slave的数据会再次和master的数据同步。(所以说在弄主从复制的时候用默认的slave-read-only选项 yes)
3、如果将master的dump.rdb文件和 appendonly.aof文件都删除了并且重启master,master的数据将被清空,slave连接master后数据也会被清空