Redis主从安装

Redis主从安装

主从复制简介

主从复制是为了达成高可用

  • 为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服
    务器上,连接在一起,并保证数据是同步的。

  • 即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。
    在这里插入图片描述
    主从复制

  • 主从复制即将master中的数据即时、有效的复制到slave中

  • 一个master可以拥有多个slave,一个slave只对应一个master

  • 职责

    • master:

      • 写数据
      • 执行写操作时,将出现变化的数据自动同步到slave
      • 读数据(可忽略)
    • slave:

      • 读数据
      • 写数据(禁止)

主从复制的概念

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

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

主从复制的作用

读写分离:主节点写,从节点读,提高服务器的读写负载能力

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

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

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

高可用(集群)基石︰除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

Redis主从复制部署

master主机上操作

[root@master ~]# yum -y install systemd-devel gcc gcc-c++ tcl-devel make wget

[root@master ~]# cd /usr/src/
[root@master src]# wget https://download.redis.io/releases/redis-6.2.6.tar.gz
--2021-12-14 11:26:22--  https://download.redis.io/releases/redis-6.2.6.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2476542 (2.4M) [application/octet-stream]
正在保存至: “redis-6.2.6.tar.gz”

redis-6.2.6.ta 100%   2.36M   137KB/s  用时 32s         

2021-12-14 11:26:58 (76.0 KB/s) - 已保存 “redis-6.2.6.tar.gz” [2476542/2476542])

[root@master src]# tar xf redis-6.2.6.tar.gz 
[root@master src]# ls
debug  kernels  redis-6.2.6  redis-6.2.6.tar.gz
[root@master src]# cd redis-6.2.6/
[root@master redis-6.2.6]# make MALLOC=libc USE_SYSTEMD=yes && \
> make install PREFIX=/usr/local/redis

[root@master redis-6.2.6]# mkdir -p /usr/local/redis/conf
[root@master redis-6.2.6]# cp redis.conf /usr/local/redis/conf/
[root@master redis-6.2.6]# vi /usr/lib/systemd/system/redis_server.service
[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/re
dis/conf/redis.conf --supervised systemd
Type=notify

[Install]
WantedBy=multi-user.target


[root@master redis-6.2.6]# echo 511 > /proc/sys/net/core/somaxconn
[root@master redis-6.2.6]# echo vm.overcommit_memory = 1 >> /etc/sysctl.conf
[root@master redis-6.2.6]# sysctl -p
vm.overcommit_memory = 1
[root@master redis-6.2.6]# systemctl daemon-reload 
[root@master redis-6.2.6]# systemctl enable --now redis_server.service 
Created symlink /etc/systemd/system/multi-user.target.wants/redis_server.service → /usr/lib/systemd/system/redis_server.service.
[root@master redis-6.2.6]# ss -anlt
State  Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0      511        127.0.0.1:6379      0.0.0.0:*   
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*   
LISTEN 0      511            [::1]:6379         [::]:*   
LISTEN 0      128             [::]:22           [::]:*   


[root@master ~]# vim /usr/local/redis/conf/redis.conf
requirepass 123456
[root@master bin]# ./redis-cli 
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> exit
[root@master bin]# ./redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> ping
PONG

slave主机上操作

[root@slave ~]# yum -y install systemd-devel gcc gcc-c++ tcl-devel make wget


[root@slave ~]# cd /usr/src/
[root@slave src]# wget https://download.redis.io/releases/redis-6.2.6.tar.gz
--2021-12-14 11:27:30--  https://download.redis.io/releases/redis-6.2.6.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2476542 (2.4M) [application/octet-stream]
正在保存至: “redis-6.2.6.tar.gz”

redis-6.2.6.ta 100%   2.36M  65.1KB/s  用时 77s         

2021-12-14 11:29:02 (31.3 KB/s) - 已保存 “redis-6.2.6.tar.gz” [2476542/2476542])

[root@slave src]# tar xf redis-6.2.6.tar.gz 
[root@slave src]# ls
debug  kernels  redis-6.2.6  redis-6.2.6.tar.gz
[root@slave src]# cd redis-6.2.6/
[root@slave redis-6.2.6]# make MALLOC=libc USE_SYSTEMD=yes && \
> make install PREFIX=/usr/local/redis


[root@slave redis-6.2.6]# mkdir -p /usr/local/redis/conf
[root@slave redis-6.2.6]# cp redis.conf /usr/local/redis/conf/
[root@slave redis-6.2.6]# vi /usr/lib/systemd/system/redis_server.service
[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf --supervised systemd
Type=notify

[Install]
WantedBy=multi-user.target

[root@slave redis-6.2.6]# echo 511 > /proc/sys/net/core/somaxconn
[root@slave redis-6.2.6]# echo vm.overcommit_memory = 1 >> /etc/sysctl.conf
[root@slave redis-6.2.6]# sysctl -p
vm.overcommit_memory = 1
[root@slave redis-6.2.6]# systemctl daemon-reload
[root@slave redis-6.2.6]# systemctl restart redis_server.service
[root@slave redis-6.2.6]# ss -anlt
State  Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0      511        127.0.0.1:6379      0.0.0.0:*   
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*   
LISTEN 0      511            [::1]:6379         [::]:*   
LISTEN 0      128             [::]:22           [::]:*   

配置Redis主从

[root@slave ~]# vim /usr/local/redis/conf/redis.conf
replicaof 192.168.200.133 6379
[root@slave ~]# systemctl restart redis_server.service

验证

[root@master bin]# ./redis-cli -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> set name tom
OK
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> exit
[root@slave ~]# cd /usr/local/redis/bin/
[root@slave bin]# ./redis-cli 
127.0.0.1:6379> get name
"tom"
127.0.0.1:6379> 
127.0.0.1:6379> set name abc
(error) READONLY You can't write against a read only replica.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值