跟MySQL一样,Redis也有高可用架构的主从复制。虽然两者的实现方式有些区别,但作用都是大同小异的,都是为一个数据提供了多个副本保证了数据的安全性并且对数据的读写操作进行分离,分担了主节点的读写负载,让Redis的性能更优越。
下面使用同一个主机,不同服务端口的方式对Redis进行主从复制
Redis在Centos7安装方法:https://blog.csdn.net/vincen123/article/details/86548046
1、在Redis的目录里创建两个目录
mkdir /redis/data
#用于存放redis日志文件的目录
mkdir /redis/config
#用于存放redis配置文件的目录
2、创建主从节点的配置文件(这里只配置一些简单的)
cd /redis/config
#切换到config目录里创建redis的配置文件
vim redis-6379.conf #配置Redis主节点的配置
port 6379 #启动端口为6379
daemonize yes #以守护进程的方式启动
pidfile /var/run/redis-6379.pid #设置pid文件的路径并改名字
logfile "6379.log" #设置日志文件的名字
dbfilename dump-6379.rdb #设置dump文件的名字
dir /redis/data #设置数据文件的存放位置
保存并退出
vim redis-6380.conf #配置Redis从节点的配置
port 6380 #端口为6380
daemonize yes
pidfile /var/run/redis-6380.pid
logfile "6380.log"
dbfilename dump-6380.rdb
slaveof 127.0.0.1 6379 #设置这个节点的主节点IP和端口号
dir /redis/data
slave-read-only yes #从节点只读
保存并退出
vim redis-6381.conf #配置Redis从节点的配置
port 6381 #端口为6381
daemonize yes
pidfile /var/run/redis-6381.pid
logfile "6381.log"
dbfilename dump-6381.rdb
slaveof 127.0.0.1 6379
dir /redis/data
slave-read-only yes #从节点只读
保存并退出
3、通过配置文件的方式动态启动Redis服务
redis-server redis-6379.conf
#启动6379端口的redis服务
redis-server redis-6380.conf
#启动6380端口的redis服务
redis-server redis-6381.conf
#启动6381端口的redis服务
ps -ef | grep redis #查看redis的进程
root 2709 1 0 20:49 ? 00:00:00 redis-server *:6380
root 2715 1 0 20:49 ? 00:00:00 redis-server *:6379
root 2827 1 0 20:51 ? 00:00:00 redis-server *:6381
root 2856 1392 0 20:51 pts/0 00:00:00 grep --color=auto redis
#可以看到6379,6380,6381这三个端口的服务都已经启动了
4、在主节点中查看主从复制信息(也可以通过 redis-server -p 6379 进入redis客户端然后输入info replication 命令查看)
redis-cli -p 6379 info replication
# Replication
role:master #角色是主节点
connected_slaves:2 #从节点有两个
slave0:ip=127.0.0.1,port=6380,state=online,offset=420,lag=1 #从节点的信息
slave1:ip=127.0.0.1,port=6381,state=online,offset=420,lag=0 #从节点的信息
master_replid:c33cfa507e0ace7d9087e2edd63e29bb09031e1f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:420
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576 #缓冲区的大小
repl_backlog_first_byte_offset:1
repl_backlog_histlen:420
5、在从节点中查看主从复制信息,6380和6381的都大致一样(也可以通过 redis-server -p 6380 进入redis客户端然后输入info replication 命令查看)
redis-cli -p 6380 info replication #在端口号为6380的客户端中查看主从复制信息
# Replication
role:slave
master_host:127.0.0.1 #主节点的IP
master_port:6379 #主节点的端口
master_link_status:up #主从复制链路的状态
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:420
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:c33cfa507e0ace7d9087e2edd63e29bb09031e1f #主节点的replid
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:420
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:420
6、在主节点插入一些数据
redis-cli -p 6379 #使用客户端连接6379端口的服务端
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> set a b
OK
127.0.0.1:6379> set c d
OK
127.0.0.1:6379> set e f
OK
7、在从节点上获取这些value,在6380和6381都是可以的
redis-cli -p 6380
127.0.0.1:6380> get hello
"world"
127.0.0.1:6380> get a
"b"
127.0.0.1:6380> get c
"d"
127.0.0.1:6380> get e
"f"
127.0.0.1:6380> set o q #在从节点上进行写数据操作
(error) READONLY You can't write against a read only replica.
#服务告警,提示这个节点的服务只能进行读操作,不能进行写操作
这里已经完成Redis最基本的主从复制配置了。也可以查看Redis日志来进行验证