美文网首页Java 杂谈程序园
Linux Redis 高可用之主从复制

Linux Redis 高可用之主从复制

作者: 风平浪静如码 | 来源:发表于2019-02-18 21:47 被阅读0次

Redis主从复制简介

和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。

redis主从复制特性:

使用异步复制

一个主服务器可以有多个从服务器

从服务器也可以有自己的从服务器

复制不会阻塞主服务器

可以通过复制功能来让主服务器免于执行持久化操作,由从服务器去执行持久化操作即可

1、Redis主从部署

1.环境规划

所有机器统一centos7.4系统环境,安装redis 3.2.2,并且配置环境变量

主机名IP地址服务linux-node1172.16.1.170redis 主库linux-node2172.16.1.171redis 从库linux-node3172.16.1.173redis 从库

2.安装redis软件(所有节点统一安装)

#1.确保系统已安装了Pcre(编译安装依赖于pcre组件)

[root@xmh ~]# yum install pcre  -y

#2.下载redis

mkdir /data

cd /data

wget http://download.redis.io/releases/redis-3.2.2.tar.gz

#3.解压并编译redis

tar xf redis-3.2.2.tar.gz

mv redis-3.2.2 redis

cd redis

make

#4.配置redis环境变量,使其能直接在命令使用redis命令

echo 'export PATH="/data/redis/src/:$PATH"' >>/etc/profile

source /etc/profile

编译安装完成后会在当前目录生成src这个目录(/data/redis/src),该目录存放的是redis的各种命令。

3.redis添加配置文件(所有redis节点统一的配置文件)

#1.创建存放redis配置文件的目录,

mkdir /data/6379  -p 

#2.redis配置文件参数如下:

#vim /data/6379/redis.conf   

daemonize yes

port 6379

logfile /data/6379/redis.log

dir /data/6379

dbfilename dump.rdb

protected-mode no

save 900 1

save 300 10

save 60 10000

参数解释:

daemonize yes                #开启守护进程

port 6379                    #redis端口号

logfile /data/6379/redis.log  #redis日志文件保存路径

dir /data/6379                #redis数据文件保存路径

dbfilename dump.rdb          #redis持久化RDB文件名(默认也是该文件名)

protected-mode no            #关闭redis安全模式

save 900 1                    #900秒后至少有1个key更改(save为RDB的持久化参数)

save 300 10                  #300秒后至少有10个key更改

save 60 10000                #60秒后至少有10000个key更改

注意:持久化参数可有可无都不会影响本次实验,作者添加该参数的原因仅仅是为了配置文件参数的完整性

4.启动redis服务(所有redis节点统一执行)

redis-server /data/6379/redis.conf

ss -lntup |grep "6379"

5.开启主从(在从库上执行)

进入到redis cli模式,执行 SLAVEOF [主库IP] [主库端口]

#redis-cli

127.0.0.1:6379> SLAVEOF 172.16.1.170 6379

6.从库上检查主从复制的状态(截取部分状态参数)

#redis-cli

127.0.0.1:6379> info replication

# Replication

role:slave  #当前角色,从库

master_host:172.16.1.170  #主库的IP地址

master_port:6379          #主库的端口

master_link_status:up    #主库状态up

7.主库上检查主从复制的状态(截取部分状态参数)

#redis-cli

127.0.0.1:6379> info replication

# Replication

role:master    #当前角色,主库

connected_slaves:2 #有两个从库连接

slave0:ip=172.16.1.171,port=6379,state=online,offset=379,lag=0

slave1:ip=172.16.1.172,port=6379,state=online,offset=379,lag=1

#默认情况下redis的从库没有写数据的权限

127.0.0.1:6379> set a 10

(error) READONLY You can't write against a read only slave.

2、Redis故障切换

手工的方式实现主从故障切换,当redis主库宕机后,需要选择一个从库作为临时顶替的主库,把SLAVEOF信息清除,然后其它从库也把SLAVEOF信息清楚,重新和新的主库构建主从关系

1.将主库的redis关闭(模拟主库故障)

[root@linux-node1 ~]# redis-cli shutdown

2.登录到任意一个从库查看主从状态(主库的状态是处于down)

[root@linux-node3 /]# redis-cli

127.0.0.1:6379> info replication

# Replication

role:slave

master_host:172.16.1.170

master_port:6379

master_link_status:down  #主库状态是down

3.让linux-node2成为主库(临时充当)

#取消当前从库的角色,变成master节点

[root@linux-node2 /]# redis-cli

127.0.0.1:6379> SLAVEOF no one

4.手工将linux-node3和新的主库重新构建主从关系

#1.先取消当前的从库角色,

[root@linux-node3 /]# redis-cli

127.0.0.1:6379> SLAVEOF no one

#2.重新和新的主库构建主从关系

127.0.0.1:6379> SLAVEOF 172.16.1.170 6379

#3.查看主从状态

127.0.0.1:6379> INFO replication

# Replication

role:slave

master_host:172.16.1.171

master_port:6379

master_link_status:up  #与主库连接的状态up

欢迎工作一到五年的Java工程师朋友们加入Java高级架构:277763288

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

相关文章

网友评论

    本文标题:Linux Redis 高可用之主从复制

    本文链接:https://www.haomeiwen.com/subject/qdgzeqtx.html