1.安装环境
- Ubuntu20.04
- Redis:7.0.5
- Redis下载地址:https://github.com/redis/redis/archive/7.0.5.tar.gz
2.安装步骤
-
复制压缩包到Ubuntu服务器,并解压缩
tar -xzvf redis-7.0.5.tar.gz -
安装gcc
因为第一次执行make命令编译redis时报错了,所以需要先安装gcc环境
# 安装gcc sudo apt-get install gcc -
执行编译命令
cd redis-7.0.5 make -
执行安装命令
安装过程可能会报
pkg-config: not found# 解决pkg-config: not found错误 sudo apt-get install pkg-config # 将redis安装到/usr/local/redis make install PREFIX=/usr/local/redis -
添加环境变量
编辑
/etc/profile文件vi /etc/profile最后一行添加环境变量
export PATH=$PATH:/usr/local/redis/bin使系统变量生效
source /etc/profile -
添加配置文件
cd /usr/local/redis mkdir conf将解压redis压缩包后文件夹里的redis.conf拷贝到conf文件夹下
-
配置远程主机连接redis
# 默认配置:bind 127.0.0.1,只允许host主机访问redis服务 bind 192.168.110.97 # 默认配置:protected-mode yes。保护模式开启后,不允许其他host的客户端连接。 # By default protected mode is enabled. You should disable it only if # you are sure you want clients from other hosts to connect to Redis # even if no authentication is configured. protected-mode no # 配置redis启动时已后台方式运行 daemonize yes
3.启动主节点
启动主节点
redis-server /usr/local/redis/conf/redis.conf
查看主从复制关系
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:d4bf4a9f7a62576d53ca4ab37a661b0e0a8e15b6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
4.主从复制
4.1 什么是主从模式
主从复制也就是主从模式,当用户向master节点写入数据时,redis同步机制将数据同步到slave节点。配置主从复制后,master节点提供读写服务,slave节点只提供读服务,如果在slave节点上执行写命令,会提示报错READONLY You can't write against a read only replica.
主从模式特点:
- 同一个master可以有多个slave
- master以非阻塞方式将数据同步到slave,不会影响master的读写请求
- 主从复制可以做到读写分离
- 主从复制可以避免redis单点故障,一台slave故障后,其余的节点还可以继续提供服务,如果master节点故障,会导致整个服务不可用。
4.2 主从复制原理
当启动一个slave节点后,会向master节点发送一个sync命令,请求同步连接。不管slave与master是第一次连接还是重新连接,master节点都会启动一个后台进程,将数据快照保存到文件中,同时master节点会将记录所有修改数据的命令并将其缓存在数据文件中。
后台进程完成缓存操作后,master将数据文件发送给slave,slave将数据文件保存到硬盘上,然后将其加载到内存中,接着master就会把所有修改数据的命令发送给slave。
4.3 主从复制搭建
-
创建从节点slave1和slave2的配置文件redis-6380.conf,redis-6381.conf
redis-6380.conf
port 6380 bind 192.168.110.97 protected-mode no daemonize yes # replicaof <masterip> <masterport> replicaof 192.168.110.97 6379redis-6381.conf
port 6381 bind 192.168.110.97 protected-mode no daemonize yes # replicaof <masterip> <masterport> replicaof 192.168.110.97 6379 -
启动slave1和slave2
redis-server /usr/local/redis/conf/redis-6380.conf redis-server /usr/local/redis/conf/redis-6381.conf查看主从复制关系
# Replication role:master connected_slaves:2 slave0:ip=192.168.110.97,port=6380,state=online,offset=14,lag=1 slave1:ip=192.168.110.97,port=6381,state=wait_bgsave,offset=0,lag=0 master_failover_state:no-failover master_replid:78358da5a228467f0de1278fea4685ad81b21216 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:14 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:14 -
测试主节点宕机
# Replication role:slave master_host:192.168.110.97 master_port:6379 # 主节点连接状态为down master_link_status:down master_last_io_seconds_ago:-1 master_sync_in_progress:0 slave_read_repl_offset:17094 slave_repl_offset:17094 master_link_down_since_seconds:62 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:78358da5a228467f0de1278fea4685ad81b21216 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:17094 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:14687 repl_backlog_histlen:2408主节点宕机后,slave节点的角色没有发生任何变化,master_link_status的值变为down,意味着slave节点只能提供读服务,无法承担起master节点的写任务,因此整个redis系统将无法正常运行。
如果master节点宕机后,slave节点能够主动变成master节点,那么上述问题就解决啦。
Redis安装与主从复制搭建详解
本文介绍了Redis在Ubuntu20.04系统的安装,包括下载、解压、安装gcc、编译、配置环境变量等步骤。还阐述了主从复制模式,包括其特点、原理,并详细说明了搭建过程,最后测试主节点宕机情况,指出若从节点能主动变为主节点可解决系统运行问题。
1660

被折叠的 条评论
为什么被折叠?



