1.主从复制是什么
主从复制,是指将一台 Redis 服务器的数据,复制到其他的 Redis 服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower), 数据的复制是单向的!只能由主节点复制到从节点(主节点以写为主、从节点以读为主)—— 读写分离。
默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但每个从节点只能由一个主节点,Master以写为主,Slave以读为主。
2.主从复制能干嘛
- 读写分离,性能扩展,高可用
- 容灾快速恢复
3.搭建主从复制
3.1 声明需要修改的redis.conf部分
#开启以下配置
daemonize yes
#Pid文件名称pidfile,名称以redis+端口号命名,例如:
pidfile /var/run/redis6380.pid
#指定端口,例如:
port 6380
#日志文件,例如:
dbfilename dump6380.rdb
#将配置文件以下配置关闭或者Appendonly下方的配置文件名称修改改成各个不一样的
Appendonly on
3.2 首先在根目录下创建一个目录
# 打开根目录
cd /# 创建myredis目录
mkdir myredis
3.3 将之前启动用的redis.conf复制一份到myredis文件夹中
#我启动redis的redis.conf配置文件是存放在/etc/redis.confcp/etc/redis.conf /myredis/redis.conf
3.4 然后再创建多个以redis+端口号.conf的配置文件
#创建一个redis6379.conf 或者 vi redis6379.conf
vim redis6379.conf
#将一下配置写入到配置文件
include /myredis/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb
#创建redis6380.conf配置文件
vim redis6380.conf
#将一下配置写入到配置文件
include /myredis/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb
#创建redis6381.conf配置文件
vim redis6381.conf
#将一下配置写入到配置文件
include /myredis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb
#如还需多个从机依次类推
注意事项:首先每个Redis配置不能配置密码(requirepass)否则主从复制连接不上(应该有解决方案但是我没去探)。
3.5 启动多个Redis服务
redis-server /myredis/redis6379.conf
redis-server /myredis/redis6380.conf
redis-server /myredis/redis6381.conf
#查看redis进程ps-ef | grep redis
查看进程有以下效果说明启动成功!
查看各个Redis服务的主从信息
#进入redis服务 redis-cli -p redis服务端口号
redis-cli-p 6379
#查看当前机器的主从信息
info replication
问题:发现各个Redis服务都是master(主),并没有起到主从复制的效果。
原因:三个服务只是启动好了并没有进行主从复制连接起来。
3.6 将三个Redis服务连起来
#进入你需要设置为从机的Redis服务 redis-cli -p redis服务端口号
redis-cli-p 6380
#执行指向主机的操作 slaveof 主机地址 主机端口
slaveof 127.0.0.1 6379
我们最后再来看:
首先是主机:role是master,然后下面有slave0,slave1两个从机的端口信息.
从机:两个从机的role都变成了slave即可
最后,单机的主从复制就搭建好了,如果需要搭建多台服务器的主从复制,其实也就是将从机的目标主机端口和配置稍作修改一下就可以了。
版权归原作者 Netty. 所有, 如有侵权,请联系我们删除。