当前位置: 移动技术网 > 网络运营>服务器>Linux > Redis主从复制

Redis主从复制

2020年07月17日  | 移动技术网网络运营  | 我要评论

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 (查看是否启动成功)
    在这里插入图片描述
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网