Redis的主从复制

一、主从复制配置

案例:一主三从

        主:6378

        从:6376、6377

# 下面是我用docker创建的容器给大家演示,可以理解为虚拟机,还是不懂的可以忽略。

docker run  --net host --name=myredis01 --privileged=true \
-v /data/docker/redis/redis.conf:/etc/redis/redis.conf \
-v /data/docker/redis/data:/data \
-d redis:6.2.6 \
redis-server /etc/redis/redis.conf --port 6378

docker run  --net host --name=myredis02 --privileged=true \
-v /data/docker/redis/redis.conf:/etc/redis/redis.conf \
-d redis:6.2.6 \
redis-server /etc/redis/redis.conf --port 6377

docker run  --net host --name=myredis03 --privileged=true \
-v /data/docker/redis/redis.conf:/etc/redis/redis.conf \
-d redis:6.2.6 \
redis-server /etc/redis/redis.conf --port 6376

1、准备3台redis服务启动

        并连接,这个就不演示了,没什么难度。

2、进入其中一台看下服务器状况

        info replication

 可以看出都是主服务器,然后配置主从关系

3、配置主从

进入6377和6376从机执行

slaveof 主服务器ip 端口

4、几个重要的点

1)当其中一台从机挂掉后,重新启动,就不是从机了,需要重新配置,重新配置完后,从机会立即拥有主机所有key

2)此时主机down掉后,从机是不会升级到主服务器的。重启主服务器后,主服务器还是主服务器,这点是和从服务器的区别

5、同步原理

1)当从连接上主服务器之后,从服务器向主服务发送进行数据同步消息

2)主服务器接到从服务器发送过来同步消息,把主服务器数据进行持久化,rdb文件,把rdb文件发送从服务器,从服务器拿到rdb进行读取---全量同步

3)每次主服务器进行写操作之后,和从服务器进行数据同步---增量同步

6、反客为主---哨兵模式

当哨兵模式开启时,哨兵会监控主服务是否挂掉,如果挂掉,会从slave里推选从新的master。

在redis任意一台服务器的一个位置新建文件 vim sentinel.conf,写入下面内容

sentinel monitor redismaster 47.95.33.138 6378 1

执行 redis-sentinel /data/sentinel.conf 启用哨兵,此时如果6378down掉了,其中剩下两个会成为master继续工作,如果如果6378再次重启,那么他会变为slave,丧失大哥权力。

 1)缺点:复制延迟

由于所有的写操作都是先在Master上操作,然后同步更新到slave上,所以从Master同步到slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,slave机器数量的增加也会使这个问题更加严重。

2)推选新master原则

        a. redis.conf里的配置 replica-priority 越小越容易被推选。默认100

                replica-priority 100

        b. 推选数据偏移量高的服务器,通俗讲就是,和之前的主服务器同步量最高的

        c. 选择runid最小的从服务器

二、PHP、Java链接主从服务

根据sentinel配置里的主服务器名称获取主服务器链接,详细可以自己搜索下
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值