我们知道要避免单点故障,即保证高可用,便需要冗余(副本)方式提供集群服务。

而Redis 提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。

主从复制概述

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。

前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。

主从复制的作用主要包括:

  • 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  • 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  • 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;
    • 尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  • 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

主从库之间采用的是读写分离的方式。

  • 读操作:主库、从库都可以接收;
  • 写操作:首先到主库执行,然后,主库将写操作同步给从库。

主从复制建立

准备好3个redis服务器

db-51
db-52
db-53

快速部署3个redis节点

ssh-keygen
ssh-copy-id root@10.0.0.52
ssh-copy-id root@10.0.0.53 yum install rsync -y
rsync -avz /opt/redis* root@10.0.0.52:/opt/
rsync -avz /opt/redis* root@10.0.0.53:/opt/ # 修改配置文件
sed -i 's/51/52/g' /opt/redis_6379/conf/redis_6379.conf
sed -i 's/51/53/g' /opt/redis_6379/conf/redis_6379.conf # 创建数据目录
mkdir -p /www.yuchaoit.cn/redis/data/ # 启动3个redis数据库
/opt/redis/src/redis-server /opt/redis_6379/conf/redis_6379.conf # 检查3个redis
/opt/redis/src/redis-cli ping
/opt/redis/src/redis-cli dbsize # 主库写入测试数据
for i in {1..10000};do redis-cli set k_${i} v_${i} && echo "key --- ${i} is ok.";done # 检查
[root@db-51 /www.yuchaoit.cn/redis/data]#redis-cli dbsize
(integer) 10000

配置主从关系

建立主从关系后,master-slave的数据操作就是实时的了
从库执行命令
[root@db-52 /opt/redis_6379/conf]#/opt/redis/src/redis-cli
127.0.0.1:6379> replicaof 10.0.0.51 6379
OK
127.0.0.1:6379> dbsize
(integer) 10000 [root@db-53 ~]#/opt/redis/src/redis-cli
127.0.0.1:6379> replicaof 10.0.0.51 6379
OK
127.0.0.1:6379> dbsize
(integer) 10000
127.0.0.1:6379>

永久配置主从关系

写入配置文件

# replicaof <masterip> <masterport>
# 目前主流,新版redis 5 改为了这个参数。

检查复制关系

slave

[root@db-53 ~]#/opt/redis/src/redis-cli
127.0.0.1:6379> role
1) "slave"
2) "10.0.0.51"
3) (integer) 6379
4) "connected"
5) (integer) 210 127.0.0.1:6379> role
1) "slave"
2) "10.0.0.51"
3) (integer) 6379
4) "connected"
5) (integer) 280 127.0.0.1:6379> info replication
# Replication
role:slave
master_host:10.0.0.51
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:238
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:e6a27417c0d97271d1ccffae5923158737cef627
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:238
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:238
127.0.0.1:6379>

master

127.0.0.1:6379> role
1) "master"
2) (integer) 266
3) 1) 1) "10.0.0.52"
2) "6379"
3) "266"
2) 1) "10.0.0.53"
2) "6379"
3) "266"
127.0.0.1:6379> 127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=10.0.0.52,port=6379,state=online,offset=322,lag=0
slave1:ip=10.0.0.53,port=6379,state=online,offset=322,lag=0
master_replid:e6a27417c0d97271d1ccffae5923158737cef627
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:322
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:322
127.0.0.1:6379>

试试主从关系

# master
# slave

取消slave身份

127.0.0.1:6379> REPLICAOF no one
OK
127.0.0.1:6379> role
1) "master"
2) (integer) 586
3) (empty list or set)
127.0.0.1:6379> dbsize
(integer) 10001

redis主从细节问答

1. slave节点只读,不可写
2. slave不会故障转移
3. 主从故障需要人工介入的地方
- 主库的IP地址
- 从节点要重新 REPLICAOF 设置复制角色 4. 从库建立主从关系时,会清空自己的数据,慎重同步的对象。
5.无论是master,slave节点,在进行主从关键建立等大修改的操作时,务必先对持久化数据做好备份。slave也可以有RDB备份。

主库设置了密码

# master主库 redis_6379.conf
requirepass chaoge888 # slave从库必须设置密码,否则无法建立主从管理 以认证的方式连接到master。 如果master中使用了“密码保护”,slave必须交付正确的授权密码,才能连接成功。 “requirepass”配置项指定了当前server的密码。 此配置项中值需要和master机器的“requirepass”保持一致。 # slave配置文件 [root@db-53 ~]#tail -2 /opt/redis_6379/conf/redis_6379.conf
masterauth chaoge888
replicaof 10.0.0.51 6379

redis主从复制篇的更多相关文章

  1. Redis面试篇 -- Redis主从复制原理

        Redis一般是用来支撑读高并发的,为了分担读压力,Redis支持主从复制.架构是主从架构,一主多从, 主负责写,并且将数据复制到其它的 slave 节点,从节点负责读. 所有的读请求全部走从 ...

  2. NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

  3. 【转】 NoSQL初探之人人都爱Redis:(4)Redis主从复制架构初步探索

    一.主从复制架构简介 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构.那么,我们首先来了解一 ...

  4. 深入剖析 redis 主从复制

    主从概述 redis 支持 master-slave(主从)模式,redis server 可以设置为另一个 redis server 的主机(从机),从机定期从主机拿数据.特殊的,一个 从机同样可以 ...

  5. [转载] 深入剖析 redis 主从复制

    转载自http://www.cnblogs.com/daoluanxiaozi/p/3724299.html 主从概述 redis 支持 master-slave(主从)模式,redis server ...

  6. redis主从复制详述

    一.主从复制详述 原理其实很简单,master启动会生成一个run id,首次同步时会发送给slave,slave同步命令会带上run id以及offset,显然,slave启动(初次,重启)内存中没 ...

  7. (转)深入剖析Redis主从复制

    一.主从概述 Redis 支持 Master-Slave(主从)模式,Redis Server 可以设置为另一个 Redis Server 的主机(从机),从机定期从主机拿数据.特殊的,一个从机同样可 ...

  8. 深入剖析Redis主从复制

    [http://sofar.blog.51cto.com/353572/1413024/]   [Redis 主从复制的内部协议和机制]   一.主从概述 Redis 支持 Master-Slave( ...

  9. Redis主从复制简单介绍

    由于本地环境的使用,所以搭建一个本地的Redis集群,本篇讲解Redis主从复制集群的搭建,使用的平台是Windows,搭建的思路和Linux上基本一致! (精读阅读本篇可能花费您15分钟,略读需5分 ...

  10. Redis分布式篇

    Redis分布式篇 1 为什么 需要 Redis 集群 1.1 为什么需要集群? 1.1.1 性能 ​ Redis 本身的 QPS 已经很高了,但是如果在一些并发量非常高的情况下,性能还是会受到影响. ...

随机推荐

  1. 当 Knative 遇见 WebAssembly

    简介: Knative 可以支持各种容器化的运行时环境,我们今天来探索一下利用 WebAssembly 技术作为一个新的 Serverless 运行时. 作者:易立 Knative 是在 Kubern ...

  2. [FAQ] Vmmem 内存占用高的问题 -Win10 -WLS2

    1按下Windows + R 键,输入 %UserProfile% 并运行进入用户文件夹 2新建文件 .wslconfig ,然后记事本编辑 3 填入以下内容并保存, memory为系统内存上限,这里 ...

  3. [FE] yarn, npm 切换镜像源

    yarn 设置命令如下,会修改 ~/.yarnrc 内容. $ yarn config set registry https://registry.yarnpkg.com npm 设置命令如下,会修改 ...

  4. WPF 触摸下如何给 StylusPointCollection 添加点

    本文告诉大家如何在触摸下给 WPF 的 StylusPointCollection 添加新的点 在自己默认创建的 StylusPointCollection 里面添加点是十分简单的,如以下代码,可以非 ...

  5. 2019-11-29-VisualStudio-2019-如何离线下载

    title author date CreateTime categories VisualStudio 2019 如何离线下载 lindexi 2019-11-29 08:38:13 +0800 2 ...

  6. 关于Git和Svn的区别

    关于Git 和 Svn 的选用,详细列出区别 Git 是分布式的,而 Svn 不是分布的; Git 把内容按元数据方式存储,而 SVN 是按文件; Git 没有一个全局版本号,而 SVN 有:目前为止 ...

  7. 一:大数据架构回顾-Lambda架构

    "我们正在从IT时代走向DT时代(数据时代).IT和DT之间,不仅仅是技术的变革,更是思想意识的变革,IT主要是为自我服务,用来更好地自我控制和管理,DT则是激活生产力,让别人活得比你好&q ...

  8. 01.Markdown 语法

    标题 # 一级标题 ## 二级标题 ### 三级标题 ...(最多六级标题) 字体 **hello**:粗体 *hello*:斜体 三个*:粗体+斜体 ~~hello~~:删除线 引用 > 引用 ...

  9. USB3.0与Type-C接口的关系

    USB全称为Universal Serial Bus,翻译过来就是通用串行总线,是连接计算机与外部设备的一种串口总线标准.USB的发展经历了一下阶段: USB1.0:1.5Mbps(192KB/s)低 ...

  10. WEB服务与NGINX(22)- nginx的七层负载均衡功能

    目录 1. NGINX实现负载均衡功能 1.1 nginx负载均衡概述 1.2 nginx实现http的负载均衡 1.2.1 nginx基于http负载均衡场景配置 1.2.1.1 负载均衡相关参数 ...