Redis主从复制(上)
@toc
下篇链接:https://blog.csdn.net/qq_43753724/article/details/117428696
1、Redis主从复制:
Redis支持简单且以用的主从复制(master-slave replication)功能,该功能可以让从服务器(slave server)成为主服务器(master server)的精确复制品。
2、Redis主从复制能干什么?
- 读写分离
- 容灾恢复
3、相关操作命令
3.1 SLAVEOF host port
通过执行 SLAVEOF host port 命令,可以将当前服务器转变为指定服务器的从属服务器(slave server)。
如果当前服务器已经是某个主服务器(master server)的从属服务器,那么执行 SLAVEOF host port
将使当前服务器停止对旧主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步。 另外,对一个从属服务器执行命令 SLAVEOF NO
ONE 将使得这个从属服务器关闭复制功能,并从从属服务器转变回主服务器,原来同步所得的数据集不会被丢弃。 利用“SLAVEOF NO ONE
不会丢弃同步所得数据集”这个特性,可以在主服务器失败的时候,将从属服务器用作新的主服务器,从而实现无间断运行。
3.2 ROLE
返回实例在复制中担任的角色, 这个角色可以是 master 、 slave 或sentinel。
除了角色之外, 命令还会返回与该角色相关的其他信息, 其中: 主服务器将返回属下从服务器的 IP 地址和端口。
从服务器将返回自己正在复制的主服务器的 IP 地址、端口、连接状态以及复制偏移量。
Sentinel 将返回自己正在监视的主服务器列表。
3.3 info replication
查看主/从复制信息
4、读写分离实例
4.1、配从库不配主库
4.2、从库配置:
slaveof 主库IP 主库端口
说明:每次与master断开连接之后,都需要重新连接,除非你配置井redis.conf文件
4.3 修改配置文件细节操作
4.3.1 拷贝多个redis.conf文件
cd /usr/local/bin
ll
复制redis.conf文件:
cp redis.conf redis6379.conf
cp redis.conf redis6380.conf
cp redis.conf redis6381.conf
这里只演示下修改redis6379.conf的配置,其他两个就是把6379分别换成6380和6381即可
vi redis6379.conf
4.3.2 开启daemonize yes
4.3.3 修改pid文件名字
4.3.4 指定端口
4.3.5 设置Log文件名字
4.3.6 修改Dump.rdb文件名字
5、主从复制
即一个主服务器,两个从服务器
5.1 一主二仆
这里需要启动三个终端,并分别使用上面配置好的6379、6380、6381端口
5.1.1 启动并查看主从复制信息
6379端口:
设置几个值:
set k1 v1
set k2 v2
set k3 v3
set k3 v4
6380端口:
6381端口:
可以看到没有配置之前,role的值都是master,即都是主服务器
5.1.2 将6380和6381端口配置成6379端口的从服务器
6380端口:
slaveof 127.0.0.1 6379
取值:
取主服务器设置的值也是没问题的
6381端口:
SLAVEOF 127.0.0.1 6379
可以看到两个从服务器的role配置项的值变为了slave
5.1.3 日志查看
cd /usr/local/bin
ll
5.1.4 从机是否可以写?(验证读写分离)
假设三台服务器都要set k6(假设主机抢先设置)
主服务器:
set k6 v6
6380:
set k6 v66
6381:
set k6 v666
从结果来看,从机是不能写的,符合读写分离
5.1.5 书机SHUTDOWN后情况如何?从机是上位还是原地待命?
先关闭主机(6379):
查看从机的主从配置信息:
可以看到,从机还是从机,咸鱼翻身还是咸鱼,连接状态变为了down,从机原地待命
5.1.6 主机又回来后,主机新增记录,从机能否顺利复制?
重启主机,并设置值set k7 v7
从机获取k7:
6380:
6381:
从结果可以看到,从机可以复制
5.1.7 一台从机宕机后,依照原有它能跟上大部队吗?
将6380端口的从机断开:
设置主机(6379)设置set k8 v8
6381端口:
没问题
6380端口由于宕机了,我们重新启动后再获取k8
查看主从配置信息:从下图看这是6380端口的role已经编程master,和原来6379的主机断开了
尝试获取k8
get k8
再次将6380配置为6379的从机:
slaveof 127.0.0.1 6379
再次获取k8
get k8
- 点赞
- 收藏
- 关注作者
评论(0)