Redis学习之主从复制

目录

概念

        主从复制

        主从复制的作用以及包括

         环境配置

        一主二仆

        方式一:通过命令设置

        方式二 通过配置文件设置

        测试主从复制


概念

        主从复制

        主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称之为主节点(master/leader),后者称为从节点(salve/follower);数据库的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。

        默认情况下,每台Redis服务器都是主节点

        且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

        主从复制的作用以及包括

        1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式!

        2、数据故障:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余

        3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应连接主节点,读Redis数据时应连接从节点),分担服务器负载;尤其是在写少读多的情况下,通过多个从节点分担负载,可以大大的提高Redis服务器的并发量!

        4、高可用(集群)基石:除了上述作用外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
一般来说,要将Redis运用到项目中,只使用一台Redis是万万不能的(容易出现宕机),原因如下:

                - 从结构上:单个redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大

                - 从容量上:单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有内存作Redis的内存,一般来
                                    说,单个Redis最大使用的内存不应该超过20个G。

        

         主从复制,读写分离!80%的情况下都是在进行读操作!减缓服务器的压力!架构中经常使用!一主二从!!

         环境配置

        只需要配置从库,不需要配置主库

127.0.0.1:7369> info replication
# Replication
role:master            # 角色
connected_slaves:1     # 从机数量
slave0:ip=127.0.0.1,port=7370,state=online,offset=1846,lag=0     # 从机地址
master_failover_state:no-failover
master_replid:908f636f667b61673929499ab1115ccec84b2533
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1846
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1846

         复制三个配置文件,修改对应配置文件中的相关内容!!

1、端口
port 6379

2、pid 名称
pidfile /var/run/redis_7371.pid

3、log文件名称
logfile "7371.log"

4、dump.rdb名称(这个位置已经修改过了)
dbfilename dump7371.rdb 

        修改完三个配置文件后,启动我们3个redis容器,然后通过进程查看(ps)

        一主二仆

        设置主从复制,可以通过两种方式进行设置

                - 通过命令行,主库不需要操作,从库执行 SLAVE ip port 进行设置

                - 通过配置文件进行设置

        方式一:通过命令设置

        从库

# 1、在从机中执行 SLAVEOF ip port
127.0.0.1:7370> SLAVEOF 127.0.0.1 7369
OK

# 2、查看从机状态

127.0.0.1:7370> info replication
# Replication
role:slave    # 角色以及发生改变
master_host:127.0.0.1    # 主机ip
master_port:7369        # 主机端口
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_read_repl_offset:0

        主库

# 查看主库状态
127.0.0.1:7369> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=7370,state=online,offset=154,lag=0
master_failover_state:no-failover
master_replid:da595a84ddf165c067309e5e10a5095696bde1f9
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:154
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:154

        方式二 通过配置文件设置

        修改 redis.conf 配置文件

# 修改replicaof 的值,设置主库的地址
replicaof 127.0.0.1 7369  

# 修改 masterauth 的值,设置主库的密码
masterauth password

        启动 7371端口的redis,并查看状态

        从库

127.0.0.1:7371> INFO replication
# Replication
role:slave
master_host:127.0.0.1
master_port:7369
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_read_repl_offset:392
slave_repl_offset:392
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:da595a84ddf165c067309e5e10a5095696bde1f9
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:392
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:351
repl_backlog_histlen:42

        主库

127.0.0.1:7369> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=7370,state=online,offset=406,lag=1
slave1:ip=127.0.0.1,port=7371,state=online,offset=406,lag=1
master_failover_state:no-failover
master_replid:da595a84ddf165c067309e5e10a5095696bde1f9
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:406
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:406

        测试主从复制

1、在主库中添加值
127.0.0.1:7369> keys *
(empty array)
127.0.0.1:7369> set k1 v1
OK
127.0.0.1:7369> set k2 v2
OK
127.0.0.1:7369> set k3 v3
OK
127.0.0.1:7369> set k4 v4
OK



2、在7370 从库中查看
127.0.0.1:7370> keys *
1) "k3"
2) "k2"
3) "k4"
4) "k1"

3、在7371 从库中查看
127.0.0.1:7371> keys *
1) "k4"
2) "k3"
3) "k1"
4) "k2"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倪家李子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值