Redis主从复制

来源:互联网 发布:淘宝只退款不退货教程 编辑:程序博客网 时间:2024/06/10 16:38

Redis主从复制

主从复制图例

本例将根据以下图示搭建Redis主从复制。
这里写图片描述
说明:
- master 6379: Redis主机,端口号:6379
- slave1 6380: Redis从机1,端口号:6380
- slave2 6381: Redis从机2,端口号:6381
- slave3 6382: Redis从机3, 端口号:6382

关系说明:master6379与slave1, slave2, slave3构成了一主多从的模式,slave3是为了缓解master主机压力,会从属于slave1.

配置文件准备

  1. 将Redis.conf文件复制4份,分别是redis6379.conf, redis6380.conf, redis6381.conf, redis6382.conf.

  2. 修改配置文件属性:

    • port: 6379,将四份配置文件中的port分别修改为对应的端口号
      例如:port:6379, port:6380
    • pidfile /var/run/redis_6379.pid 将此配置分别修改为对应的端口的pid。
      例如:pidfile /var/run/redis_6380.pid, pidfile /var/run/redis_6381.pid
    • logfile “”, 日志文件,采用端口号命名用来区分,
      例如: logfile “6379.log”, logfile “6380.log”
      -dbfilename dump.rdb 将此配置修改为对应端口号的名称。
      例如:dbfilename dump6379.rdb, dbfilename dump6380.rdb

另外从机的配置文件中需要配置两个属性:

# slaveof <masterip> <masterport>slaveof 192.168.44.129 6379# masterauth <master-password>masterauth admin

启动redis服务及客户端

  • 启动redis服务示例
[root@localhost ~]# cd /opt/redis/src/[root@localhost src]# ./redis-server ../redis6379.conf
  • 启动redis客户端示例:
[root@localhost ~]# cd /opt/redis/src/[root@localhost src]# ./redis-cli -p 6379
  • 授权认证
127.0.0.1:6382> auth adminOK
  • 查看主从复制信息:
127.0.0.1:6379> info replication

6379主从复制信息如下:

127.0.0.1:6379> info replication# Replicationrole:masterconnected_slaves:2slave0:ip=192.168.44.129,port=6380,state=online,offset=23377,lag=0slave1:ip=192.168.44.129,port=6381,state=online,offset=23377,lag=0master_repl_offset:23377repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:23376127.0.0.1:6379>

分析:
role:master – 当前redis服务是一台主机服务
connected_slaves:2 –当前主机有两个从机节点,
从机信息:
slave0:ip=192.168.44.129,port=6380,state=online,offset=23377,lag=0
slave1:ip=192.168.44.129,port=6381,state=online,offset=23377,lag=0

port=6380的redis服务主从复制信息如下:

127.0.0.1:6380> clear127.0.0.1:6380> info replication# Replicationrole:slavemaster_host:192.168.44.129master_port:6379master_link_status:upmaster_last_io_seconds_ago:3master_sync_in_progress:0slave_repl_offset:23419slave_priority:100slave_read_only:1connected_slaves:1slave0:ip=127.0.0.1,port=6382,state=online,offset=491,lag=0master_repl_offset:505repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:2repl_backlog_histlen:504127.0.0.1:6380>

分析:
role:slave – 当前redis服务是一个从机节点
master_host:192.168.44.129 – 所属主机ip地址
master_port:6379 – 所属主机端口号
master_link_status:up – 主机连接状态
connected_slaves:1 – 表明当前从机服务也有一个从机服务,该从机服务信息如下:slave0:ip=127.0.0.1,port=6382,state=online,offset=491,lag=0

port=6381的redis服务主从复制信息:

127.0.0.1:6381> info replication# Replicationrole:slavemaster_host:192.168.44.129master_port:6379master_link_status:upmaster_last_io_seconds_ago:9master_sync_in_progress:0slave_repl_offset:23447slave_priority:100slave_read_only:1connected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0127.0.0.1:6381>

分析:
以上信息仅表明当前redis服务只是一个redis从机节点,可以参考port=6380的redis服务主从复制信息的节点分析。

port=6382的redis服务的主从信息如下:

127.0.0.1:6382> info replication# Replicationrole:slavemaster_host:127.0.0.1master_port:6380master_link_status:upmaster_last_io_seconds_ago:9master_sync_in_progress:0slave_repl_offset:99slave_priority:100slave_read_only:1connected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0127.0.0.1:6382>

分析:
role:slave – 表明当前redis服务是从机节点,且主机节点信息是
master_host:127.0.0.1 – 当前从机节点的主机节点ip。
master_port:6380 – 当前从机节点的主机节点端口。
master_link_status:up – 当前从机节点的主机节点状态。
注意:这台从机节点的主机节点也是一个从机节点(port=6380),这样做的原因是为了缓解最高主机节点(port=6379)的压力

4台redis服务主从复制信息图示:
这里写图片描述

验证主从复制

我们在主机节点(port=6279)上存放几个字符串信息,并在从机上直接查看。
如下图:
这里写图片描述

参考链接:
http://doc.redisfans.com/topic/replication.html

原创粉丝点击