CentOS安装Redis并配置主从同步

NoSQL笔记 2020年05月22日

本篇笔记记录了在CentOS7环境下安装Redis并配置主从同步,并模拟主节点挂掉后提升从节点为主节点的过程。

工作准备

服务器
主节点:192.168.75.240
从节点1:192.168.75.241
从节点2:192.168.75.242
系统
CentOS7.8
selinux已关闭
firewalld已关闭
Redis
5.0.5

安装Redis,主从节点均需执行本步骤

创建源码保存目录

mkdir -p /usr/local/src
cd /usr/local/src

下载Redis

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

安装编译器

yum -y install gcc gcc-c++

解压

tar -zxvf redis-5.0.5.tar.gz
cd redis-5.0.5

编译,安装

make MALLOC=libc
make PREFIX=/usr/local/redis install

进入安装目录

cd /usr/local/redis

创建相关目录

mkdir -p /usr/local/redis/db

复制安装包下配置文件到安装目录

cp /usr/local/src/redis-5.0.5/redis.conf /usr/local/redis/

修改配置文件

vim /usr/local/redis/redis.conf

找到bind 127.0.0.1并注释掉,允许外部请求

#bind 127.0.0.1

找到protected-mode yes,把yes改成no,关闭保护模式,生产环境不要这样做

protected-mode no

找到daemonize no,把no改成yes,以守护进程方式运行

daemonize yes

找到logfile,配置log地址

logfile "/var/log/redis.log"

找到dir,设置数据目录

dir /usr/local/redis/db/

退出编辑
运行Redis

/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

查看Redis进程

[root@localhost redis]# ps aux | grep "redis"
root      11870  0.0  0.1 144112  1976 ?        Ssl  17:48   0:00 /usr/local/redis/bin/redis-server *:6379
root      11875  0.0  0.0 112824   976 pts/0    S+   17:48   0:00 grep --color=auto redis

查看Redis信息

[root@localhost redis]# /usr/local/redis/bin/redis-cli 
127.0.0.1:6379> info
# Server
redis_version:5.0.5
......

配置主从

从节点1和2上编辑配置

vim /usr/local/redis/redis.conf

写入slaveof,声明主节点ip和port

slaveof 192.168.75.240 6379

重启从节点1和2的redis

pkill redis
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf

验证主从复制

主节点登录redis,输入info replication查看主从信息

[root@localhost redis]# /usr/local/redis/bin/redis-cli 
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.75.242,port=6379,state=online,offset=140,lag=1
slave1:ip=192.168.75.241,port=6379,state=online,offset=140,lag=0
master_replid:2f2fcedc8e3c51a26a90de37d5be1648bbb33281
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1048
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1048

已经显示了两个从节点信息
测试主从复制
主节点设置一个key-value

127.0.0.1:6379> set domain www.jmsite.cn
OK

从节点1获取value

127.0.0.1:6379> get domain
"www.jmsite.cn"

从节点2获取value

127.0.0.1:6379> get domain
"www.jmsite.cn"

测试当主节点挂掉时,提升从节点为主节点

主节点上执行shutdown,关掉redis

127.0.0.1:6379> shutdown
not connected> exit
[root@localhost redis]#

从节点1执行命令,提升为主节点

127.0.0.1:6379> slaveof no one
OK
127.0.0.1:6379> 

从节点2重新设置主节点信息

127.0.0.1:6379> slaveof 192.168.75.241 6379
OK
127.0.0.1:6379> 

查看新的主节点主从信息

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.75.242,port=6379,state=online,offset=1342,lag=1
master_replid:7759edf96b6626b2b0539848e9ed2ff884a12af7
master_replid2:2f2fcedc8e3c51a26a90de37d5be1648bbb33281
master_repl_offset:1342
second_repl_offset:1273
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:1328
127.0.0.1:6379>

从节点1已被提升为主节点,从节点只剩下从节点2
配置完毕!