Bootstrap

REDIS主从复制搭建过程

REDIS主从复制搭建过程

第一步,准备三个文件夹,或者三台虚拟机,充当一个主服务器,两个从服务器。

这里选用三给个文件夹来充当一主两从

必须准备三份不同的配置文件和目录,配置文件所在目录也就是工作目录

[root@redis ~]# mkdir -p /cluster/{redis1,redis2,redis3}

[root@redis ~]# cd /cluster/

[root@redis cluster]# ls

[root@redis cluster]# cp /usr/local/redis-7.2.3/redis.conf /cluster/redis1

[root@redis cluster]# cp /usr/local/redis-7.2.3/redis.conf /cluster/redis2

[root@redis cluster]# cp /usr/local/redis-7.2.3/redis.conf /cluster/redis3

第二步,修改redis1,redis2,redis3目录下的redis.conf文件

修改,端口号,工作目录

目录修改为你刚刚创建的/cluster/redis1   /cluster/redis2   /cluster/redis3

端口号各自修改为 6380,6381,6382   (端口号随意修改,不要重复即可),可以使用下方指令,也可以到redis.conf文件下,修改

[root@redis cluster]# sed -i -r -e '$a\port 6380' -e 's#(^dir)(\s.*)#\1 /cluster/redis1#' redis1/redis.conf

[root@redis cluster]# sed -i -r -e '$a\port 6381' -e 's#(^dir)(\s.*)#\1 /cluster/redis2#' redis2/redis.conf

[root@redis cluster]# sed -i -r -e '$a\port 6382' -e 's#(^dir)(\s.*)#\1 /cluster/redis3#' redis3/redis.conf

第三步,修改每个实例的声明ip和端口port

需要在redis.conf文件中指定每一个实例的绑定ip和port信息。

replica-announce-ip=实例ip

replica-announce-port=实例port

[root@redis cluster]# sed -i '$a replica-announce-ip 192.168.244.80\nreplica-announce-port 6380 ' redis1/redis.conf

[root@redis cluster]# sed -i '$a replica-announce-ip 192.168.244.80\nreplica-announce-port 6381 ' redis2/redis.conf

[root@redis cluster]# sed -i '$a replica-announce-ip 192.168.244.80\nreplica-announce-port 6382 ' redis3/redis.conf

第四步,配置主从redis服务器

将redis1目录下启动的redis服务器设为主服务器master,redis2和redis3做为redis1的从服务器slave。修改配置文件redis.conf。同时redis1先前对其设置了密码认证,所以从服务器要想连接同步主服务器,则需要告诉从服务器主服务器的认证密码,主服器不用修改!

[root@redis cluster]# egrep "requirepass" redis1/redis.conf

修改从服务器

修改redis1和redis2配置文件中的以下两行

masterauth <master-password>     //对应主服务器的密码

replicaof <masterip> <masterport>  //对应主服务器的IP地址,和端口号

[root@redis cluster]# sed -i -r -e '/^# replicaof/a\replicaof 192.168.244.80 6380' -e '/^# masterauth/a\masterauth 123456' redis2/redis.conf

[root@redis cluster]# sed -i -r -e '/^# replicaof/a\replicaof 192.168.244.80 6380' -e '/^# masterauth/a\masterauth 123456' redis3/redis.conf

第五步,启动redis

[root@redis cluster]# redis-server redis1/redis.conf

[root@redis cluster]# redis-server redis2/redis.conf

[root@redis cluster]# redis-server redis3/redis.conf

测试,写入数据

查看slave0和slave1是否备份了

备份了,只能读,没有写权限。

要想从服务器又写权限,就要进行配置

将从服务器的 replica-read-only yes 改为 replica-read-only no

如果配置从节点可写,其它从节点 和master并不会同步数据

使用这条指令可以配置写权限

sed -i '/^replica-read-only/s#yes#no#' /cluster/redis2/redis.conf

egrep "replica-read-only" /cluster/redis2/redis.conf   //查看是否配置成功

配置完后,需要重启redis-server

;