Redis实操(二)——Redis主从复制+读写分离(一主二从)架构环境搭建

 Redis实操系列

  • Redis实操(一)——CentOS7安装Redis_DreamEhome的博客-CSDN博客
  • Redis实操(二)——Redis主从复制+读写分离(一主二从)架构环境搭建_DreamEhome的博客-CSDN博客
  • Redis实操(三)——Redis哨兵模式(Sentinel)搭建_DreamEhome的博客-CSDN博客
  • Redis实操(四)——Redis节点高可用之Cluster集群搭建_DreamEhome的博客-CSDN博客
  • Redis实操(五)——Redis其他常用操作_DreamEhome的博客-CSDN博客

目录

整体架构

实现目标

环境准备

环境搭建

1.创建相关文件夹

2.进入conf文件夹,创建redis-*.conf配置文件,并进行其内容编辑

3.启动Redis(优先启动master)

4.集群测试,校验启动及主从复制是否成功


整体架构

Redis实操(二)——Redis主从复制+读写分离(一主二从)架构环境搭建_第1张图片

 

实现目标

  • 读写分离,扩展主节点读能力,分担主节点读压力
  • 容灾恢复,一旦主节点宕机,从节点作为主节点的备份可以随时顶上来

环境准备

  • 虚拟机(演示用的CentOS7)
  • 已安装完成的Redis服务(可参考Redis实操(一)——CentOS7安装Redis_DreamEhome的博客-CSDN博客 )

环境搭建

注意:环境搭建在一台虚拟机上演示

1.创建相关文件夹

cd /usr;
#创建目录
mkdir -p soft/redis7cluster;
cd soft/redis7cluster;
#创建配置目录
mkdir conf;
#创建持久化目录
mkdir data;
#创建日志目录
mkdir log;

创建完成后各文件夹路径如图所示

2.进入conf文件夹,创建redis-*.conf配置文件,并进行其内容编辑

#进入配置目录
cd conf;
#创建master配置
touch redis-6379.conf;
#创建slave1配置
touch redis-6380.conf;
#创建slave2配置
touch redis-6381.conf;

分别编辑三个conf文件,将以下配置写入配置文件中

master(redis-6379.conf)配置文件

#不限定ip访问
bind 0.0.0.0
#端口号6379
port 6379
#开启后台运行
daemonize yes
#设置访问密码
requirepass 123456
#日志文件路径
logfile "/usr/soft/redis7cluster/log/6379.log"
#持久化文件名称
dbfilename "db-6379.rdb"
#持久化文件的存储目录
dir "/usr/soft/redis7cluster/data"
#AOF持久化开关
appendonly yes
#AOF文件名,默认是"appendonly.aof",AOF文件的保存路径,同RDB的路径一致
appendfilename "appendonly-6379.aof"
#主节点密码
masterauth 123456

slave1(redis-6380.conf)配置文件

#不限定ip访问
bind 0.0.0.0
#端口号6380
port 6380
#开启后台运行
daemonize yes
#设置访问密码
requirepass 123456
#日志文件路径
logfile "/usr/soft/redis7cluster/log/6380.log"
#持久化文件名称
dbfilename "db-6380.rdb"
#持久化文件的存储目录
dir "/usr/soft/redis7cluster/data"
#AOF持久化开关
appendonly yes
#AOF文件名,默认是"appendonly.aof",AOF文件的保存路径,同RDB的路径一致
appendfilename "appendonly-6380.aof"
#主节点密码
masterauth 123456
#从节点开启只读模式,从节点默认为yes
#replica-read-only yes
#从哪个主节点进行复制
replicaof 127.0.0.1 6379

slave2(redis-6381.conf)配置文件

#不限定ip访问
bind 0.0.0.0
#端口号6381
port 6381
#开启后台运行
daemonize yes
#设置访问密码
requirepass 123456
#日志文件路径
logfile "/usr/soft/redis7cluster/log/6381.log"
#持久化文件名称
dbfilename "db-6381.rdb"
#持久化文件的存储目录
dir "/usr/soft/redis7cluster/data"
#AOF持久化开关
appendonly yes
#AOF文件名,默认是"appendonly.aof",AOF文件的保存路径,同RDB的路径一致
appendfilename "appendonly-6381.aof"
#主节点密码
masterauth 123456
#从节点开启只读模式,从节点默认为yes
#replica-read-only yes
#从哪个主节点进行复制
replicaof 127.0.0.1 6379

3.启动Redis(优先启动master)

#启动master
redis-server /usr/soft/redis7cluster/conf/redis-6379.conf;
#启动slave1
redis-server /usr/soft/redis7cluster/conf/redis-6380.conf;
#启动slave2
redis-server /usr/soft/redis7cluster/conf/redis-6381.conf;

如果未配置REDIS_HOME环境变量,则需要进入redis安装目录执行启动命令

4.集群测试,校验启动及主从复制是否成功

ps -ef|grep redis

三个Redis均启动成功

 分别进入redis客户端进行校验:

#进入主节点Redis客户端
[root@localhost conf]# redis-cli -p 6379 -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> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=434,lag=1
slave1:ip=127.0.0.1,port=6380,state=online,offset=434,lag=1
master_failover_state:no-failover
master_replid:a18b8ab6a1bf43af853e7526acb84a2e11f1c596
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:448
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:448
#测试master写入
127.0.0.1:6379> set k1 helloredis
OK
#测试master读取
127.0.0.1:6379> get k1
"helloredis"
127.0.0.1:6379> exit
#进入从节点Redis客户端
[root@localhost conf]# redis-cli -p 6380 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
#查看复制相关状态
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_read_repl_offset:565
slave_repl_offset:565
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:a18b8ab6a1bf43af853e7526acb84a2e11f1c596
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:565
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:565
#测试数据同步,主节点set的值在子节点中可以get到
127.0.0.1:6380> get k1
"helloredis"
#测试从节点只读
127.0.0.1:6380> set k2 testReadOnly
(error) READONLY You can't write against a read only replica.
127.0.0.1:6380>

你可能感兴趣的:(Redis,centos,数据库,redis,vim,缓存)