单机配置存在的问题
- 如果只有一台,他的硬盘等硬件设备坏了,就不可以对外提供服务
- 单机所能提供的内存容量是有限的
- qps过高就很难支持
主从配置
- 数据副本
- 扩展了读的性能
Redis主从配置
概述
- redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。
- 2、通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作
过程
- 从数据库启动时,会向主数据库发送sync命令,
- 主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
- 当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库
- 从数据库收到后,会载入快照文件并执行收到的缓存的命令
- 注意:redis2.8之前的版本:当主从数据库同步的时候从数据库因为网络原因断开重连后会重新执行上述操作,不支持断点续传;作为改进,redis2.8之后支持断点续传
配置
Redis主从结构支持一主多从
主节点:192.168.33.130
从节点:192.168.33.131
- 注意:所有从节点的配置都一样,使用slaveof 192.168.33.130 6379,指定主节点的Ip地址和端口号即可
- 在192.168.33.130使用命令info Replication,查看节点状态
- 在192.168.33.131使用命令info Replication,查看节点状态
注意事项
- 如果你使用主从复制,那么要确保你的master激活了持久化,或者确保它不会在当掉后自动重启
- slave是master的完整备份,因此如果master通过一个空数据集重启,slave也会被清掉
- 在配置redis复制功能的时候如果主数据库设置了密码,需要在从数据的配置文件中通过masterauth参数设置主数据库的密码,这样从数据库在连接主数据库时就会自动使用auth命令认证了。相当于做了一个免密码登录
具体代码
- 新建一个master-slave文件夹,这个文件夹位于redis-4.0.14文件夹下面,mkdir master-slave
- 以端口命名三个文件夹,一个主节点,两个从节点,并且为每个文件夹分别创建conf(环境配置)、data(存放数据)、logs(存放日志):mkdir -pv {10190,10191,10192}/{conf,data,logs}
- 将配置文件放入到每个节点的conf文件夹下,cp /usr/local/redis-4.0.14/redis.conf 10190/conf,同理将conf文件拷贝到10191和10192文件夹下
# 10190
#后台运行
daemonize yes
#pidfile文件的存储路径
pidfile /home/bfxy/servers/master-slave/10190/redis.pid
#端口号
port 10190
#IP地址
bind 192.168.133.130
#日志级别
loglevel notice
protected-mode no
#日志的存储路径
logfile "/home/bfxy/servers/master-slave/10190/logs/redis.log"
#数据的存储路径
dir /home/bfxy/servers/master-slave/10190/data
#10191
daemonize yes
pidfile /home/bfxy/servers/master-slave/10191/redis.pid
port 10191
bind 192.168.133.130
loglevel notice
protected-mode no
logfile "/home/bfxy/servers/master-slave/10191/logs/redis.log"
dir /home/bfxy/servers/master-slave/10191/data
#10192
daemonize yes
pidfile /home/bfxy/servers/master-slave/10191/redis.pid
port 10192
bind 192.168.133.130
loglevel notice
protected-mode no
logfile "/home/bfxy/servers/master-slave/10191/logs/redis.log"
dir /home/bfxy/servers/master-slave/10191/data
- 使用redis-server 10190/conf/redis.conf 启动服务
- ps -ef |grep redis |grep 10190查看服务
- 同理启动10191和10192的服务
- 在10190里面查看相关信息info,或者使用info replication查看replication的信息
- 使用redis-cli -p 10190,启动10190的客户端,同理启动10191和10192的cli客户端
使用命令行实现主从配置
- 在10191使用命令slaveof 192.168.133.130 10190,将10191作为10190的从节点,同理将10192也如此操作,将其作为10190的从节点,再次查看相关信息,inforeplication,可以看到role作为slave了
- master_link_status:up表示从节点连接上了主节点
- SLAVEOF no one,从节点断开与主节点的连接
使用配置文件实现主从配置
- 10190的conf配置文件不动,和上面的一致
- 10191和10192的配置文件在里面添加一句话,slaveof 192.168.133.30 10190即可