欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Redis主从复制

程序员文章站 2022-07-09 18:57:53
Redis主从复制由于windows版的redis无法进行哨兵模式配置,为了演示,就切换到linux的redis上。概念是指将一台redis服务器上的数据复制到其他redis服务器上。前者称为主节点(master),后者称为从节点(slave)。主机可以读写,从机只能读。作用:高可用 (坏了一个,还有从机)负载均衡 (读写分离)故障恢复手动配置环境将redis.conf 在原目录复制二份,分别将复制后的起名redis6380.conf、redis6381.conf(我这里的red...

Redis主从复制

由于windows版的redis无法进行哨兵模式配置,为了演示,就切换到linux的redis上。

概念

是指将一台redis服务器上的数据复制到其他redis服务器上。前者称为主节点(master),后者称为从节点(slave)。

主机可以读写,从机只能读

作用:

  • 高可用 (坏了一个,还有从机)
  • 负载均衡 (读写分离)
  • 故障恢复

手动配置环境

  1. 将redis.conf 在原目录复制二份,分别将复制后的起名redis6380.conf、redis6381.conf我这里的redis.conf,在/usr/local下,redis-server在/usr/local/bin下

  2. 修改这几处地方1、端口 2、pid 名字 3、log文件名字 4、dump.rdb 名字(以6379举例:1 port 6379 、2 、pidfile /var/run/redis_6379.pid 3 logfile “6379.log”、4 dump6379.rdb)

  3. 分别执行:bin/redis-server redis.conf 、bin/redis-server redis6380.conf、bin/redis-server redis6381.conf

  4. 执行 ps aux | grep redis (查看是否启动成功)
    Redis主从复制
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-coc22yOf-

    最后分别连上各自的客户端(redis-cli -p 6379 、 redis-cli -p 6380、redis-cli -p 6381)

一主二从测试

首先从机执行命令

# 在6380客户端执行下面的slaveof命令 ; 在6381客户端同理,执行slaveof命令
slaveof 127.0.0.1 6379
OK
127.0.0.1:6380> info replication
# Replication 看到下面信息,代表从机设置成功 
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
slave_repl_offset:1
master_link_down_since_seconds:1593437278
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:fe5c0bdda83c7bb433b87efd1c19c5bba1292e16
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

如果主机的配置文件设置了密码,怎么进行主从复制

主机密码如下:

# requirepass foobared
requirepass bilibili

如果主机设置密码,那么命令是不成功的,我们看下6380和6381的日志

5410:S 28 Jun 2020 20:19:45.757 * Connecting to MASTER 127.0.0.1:6379
5410:S 28 Jun 2020 20:19:45.757 * MASTER <-> REPLICA sync started
5410:S 28 Jun 2020 20:19:45.757 * Non blocking connect for SYNC fired the event.
5410:S 28 Jun 2020 20:19:45.758 * Master replied to PING, replication can continue...
5410:S 28 Jun 2020 20:19:45.758 * (Non critical) Master does not understand REPLCONF listening-port: -NOAUTH Authentication required.
5410:S 28 Jun 2020 20:19:45.759 * (Non critical) Master does not understand REPLCONF capa: -NOAUTH Authentication required.

提示没有权限。

解决方案

  1. 在两个从机配置文件加上密码,如下:

  2. # masterauth <master-password>    #这是关键词
    masterauth bilibili
    
  3. 然后重启所有redis服务器

  4. 两个从机再执行

    slaveof 127.0.0.1 6379
    
  5. 主机执行:

    info replication
    # 显示
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6380,state=online,offset=350,lag=0
    slave1:ip=127.0.0.1,port=6381,state=online,offset=350,lag=0
    master_replid:02366eabef5c622c655e3697f456a2e97b4c133b
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:350
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:350
    127.0.0.1:6379> 
    
    

    想永久的配置主从机而不是每次在客户端输入命令,该怎么做呢?

    在配置文件(redis.conf)中找到下面的关键词

    # slaveof <masterip> <masterport>
    slaveof 127.0.0.1 6379
    

哨兵模式

最近比较忙,一直没空去写这篇,这周一定补完哨兵模式

本文地址:https://blog.csdn.net/longqiyuye925/article/details/107394064

相关标签: Redis