redis主从复制

redis主从配置


环境说明

系统角色ip应用
centos7/redhat7主master:192.168.100.100redis
centos7/redhat7从slave:192.168.100.99redis

首先两台主机都需要部署安装redis,这里就不演示安装了,安装请看上一遍文章redis安装

1. 为什么需要主从复制

从以下三点说明:

  1. redis单机一旦故障,可用通过从服务器上进行恢复数据;

  2. redis要达到高可用、高并发,只有单个redis是不够的,单个redis也就只能支持几万的QPS,所以必须以集群的形式提供服务,而集群中又以多个主从组成。

  3. 主从是以多个redis集合在一起,以一个master多个slave为模式对外提供服务,master主要以写为主,slave提供读,即是读写分离的情况,以读多写少为准。比如电商网站中的商品,读的多,写的少

2. 主从复制原理

  1. 从服务器向主服务器发送SYNC命令
  2. 主服务器收到SYNC命令后,执行BGSAVE命令,在后台生成RDB文件,使用缓冲区记录从现在开始执行的所有的写命令。
  3. 当主服务器的BGSAVE命令执行完毕后,将BGSAVE命令生成的RDB文件发送给从服务器,从服务器接收并载入这个RDB文件,将自己的数据库状态更新至主服务器执行BGSAVE命令时的数据库状态。
  4. 主服务器将记录在缓冲区里面的所有写命令发送给从服务器,从服务器执行这些写命令,将自己的数据库状态更新至主服务器数据库当前所处的状态。

3. 安装后配置

# 编辑配置文件,修改或添加参数值:
[root@100 ~]# vim /usr/local/etc/redis/redis.conf

# 如需要在后台运行,把该项的值改为yes
daemonize yes

# 从主机同样的操作修改

4. 主节点配置

[root@100 ~]# vim /usr/local/etc/redis/redis.conf
daemonize yes
port 6379
logfile 6379.log
dir ./
requirepass 123456
masterauth 123456
bind 192.168.100.100 127.0.0.1

5. 从节点配置

# 添加主节点的IP和端口号,使其成为master的从机
[root@99 ~]# vim /usr/local/etc/redis/redis.conf
port 6379
daemonize yes
logfile 6379.log
dir ./
requirepass 123456
slaveof 192.168.100.100 6379
masterauth 123456
bind 192.168.100.99 127.0.0.1

6. 启动服务

# 先启动主redis服务,再启动从redis服务
# 切换到redis安装目录
[root@100 ~]# cd /usr/local/bin/
[root@100 bin]# redis-server ../etc/redis/redis.conf 
5110:C 06 Sep 21:02:00.109 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
5110:C 06 Sep 21:02:00.109 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=5110, just started
5110:C 06 Sep 21:02:00.109 # Configuration loaded

[root@100 bin]# ps -ef |grep redis
root       5111      1  0 21:01 ?        00:00:00 redis-server 192.168.100.100:6379
root       5116   5035  0 21:02 pts/1    00:00:00 grep --color=auto redis


# 启动从服务
[root@99 ~]# cd /usr/local/bin/
[root@99 bin]# ./redis-server ../etc/redis/redis.conf 
6467:C 06 Sep 20:55:14.956 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
6467:C 06 Sep 20:55:14.957 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=6467, just started
6467:C 06 Sep 20:55:14.957 # Configuration loaded

[root@99 bin]# ps -ef |grep redis
root       5653      1  0 15:55 ?        00:00:18 redis-server 127.0.0.1:6379
root       6470   6451  0 20:55 pts/1    00:00:00 grep --color=auto redis


7. 验证主从同步:

#(master可写可读,slave仅可读,配置文件默认配置)

# 在主从节点同时连接redis客户端
[root@100 ~]# /usr/local/bin/redis-cli  -p 6379 -a 123456
127.0.0.1:6379> 

[root@99 ~]# /usr/local/bin/redis-cli -p 6379 -a 123456
127.0.0.1:6379> 


# 在主节点set一个key   value,并get测试
127.0.0.1:6379> set 123 789
OK
127.0.0.1:6379> get 123
"789"
127.0.0.1:6379> 


# 在从节点验证,通过key 123可以获取到value为789,证明主从同步成功
127.0.0.1:6379> get 123
"789"
127.0.0.1:6379> 


redis主从有一个问题就是如果redis主从复制的master服务器挂掉了,那么整体redis就崩溃了,因为master无法进行写数据,导致slave中无法更新数据,那么为了解决这个问题我们就需要有一种方案让redis宕机后可以自动进行故障转移,还好redis给我们提供一种高可用解决方案 Redis-Sentinel。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值