Redis 之 数据持久化、主从复制、哨兵、集群

一、redis 数据持久化:

  1、rdb:配置文件增加 dbfilename ,和save

port 6379
daemonize yes
dir /data/6379                   # 定义持久化文件存储位置
pidfile /data/6379/redis.pid     # redis进程pid文件
loglevel notice                  # 日志级别
logfile "/data/6379/redis.log"   # redis日志log文件
protected-mode yes               # 保护模式
#bind 10.0.0.10  127.0.0.1       # redis绑定地址
#requirepass redhat              # redis登录密码
dbfilename redis6379.rdb # rdb持久化文件 save
900 1 # rdb机制 每900秒 有1个修改记录 save 300 10 # 每300秒 10个修改记录 save 60 10000 # 每60秒内 10000修改记录

 

  2、aof:

daemonize yes
port 6379
logfile /data/6379/redis.log
dir /data/6379
requirepass redhat


appendonly yes                   #开启aof持久化
appendfsync everysec             #设置保存时间:always       总是修改类的操作
                            everysec 每秒做一次持久化
                            no 依赖系统自带的缓存大小机制

 

   选择一种持久化方式后,完成配置文件配置,重新启动redis,看目录下是否产生对应的持久化文件,.rdb文件或者  .aof文件

 如果文件被删除,数据会丢失

 

二、redis 主从复制

   1、主的配置文件

port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
protected-mode no

  2、从的配置文件

port 6380
daemonize yes
pidfile /data/6380/redis.pid
loglevel notice
logfile "/data/6380/redis.log"
dbfilename dump.rdb
dir /data/6380
protected-mode no

slaveof 127.0.0.1 6380  #指明主的地址

  注意:如果主 设置了密码 requirepass   那么 从库 再slaveof  下面要加一行申明主库的密码 masterauth  主库密码

  3、检查主从的状态

redis-cli -p 6380  info replication

  或者

127.0.0.1:6380> info replication

 

   4、如下图,则配置成功

 

 

 三、哨兵集群:Sentinel

  redis 不支持配置多主多从,所以一旦主挂了,那么将无法写入,这是就需要借助Sentinel 实现监控,一旦监控到主挂了,就会选举从库中的一台,作为主库。

官网地址:http://redisdoc.com/

redis-cli info #查看redis数据库信息

redis-cli info replication #查看redis的复制授权信息
redis-cli info sentinel   #查看redis的哨兵信息

【注意:哨兵集群,也是建立再主从复制的基础之上的】

  1、创建sentinel 哨兵配置文件,vim  redis-sentinel-26000

# Sentinel节点的端口
port 26379  
dir /var/redis/data/
logfile "26379.log"

# sentinel announce-ip 127.0.0.1   # 宣告哨兵IP, 此配置只有当使用非127.0.0.1的IP配置哨兵无法成功时加上,同时redis三个服务端也需要同步修改IP

# 当前Sentinel节点监控 127.0.0.1:6379 这个主节点
# 2代表判断主节点失败至少需要2个Sentinel节点节点同意
# mymaster是主节点的别名
sentinel monitor mymaster 127.0.0.1 6379 2

# 每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达
sentinel down-after-milliseconds mymaster 30000

# 当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1
sentinel parallel-syncs mymaster 1

# 故障转移超时时间为180000毫秒
sentinel failover-timeout mymaster 180000

daemonize yes

  2、启动哨兵

redis-sentinel /data01/redis/redis-sentinel-26379.conf

  3、查看哨兵信息

redis-sentinel -p 26000  info sentinel

  4、注意:

  如果主设置了密码,那么哨兵的配置文件要多一个认证配置

sentinel auth-pass mymaster redis123

 

四、cluster集群

   由于redis 不支持主主,数据量太大时建议使用cluster

  1、准备节点——即redis-server,配置配置文件

port 7000
daemonize yes
dir "/opt/redis/data"
logfile "/opt/redis/logs/7000.log"
dbfilename "dump-7000.rdb"
cluster-enabled yes   # 开启集群模式
cluster-config-file nodes-7000.conf  # 集群内部的配置文件
cluster-require-full-coverage no  # redis cluster需要16384个slot都正常的时候才能对外提供服务,换句话说,只要任何一个slot异常那么整个cluster不对外提供服务。 因此生产环境一般为no

  redis支持多实例的功能,我们在单机演示集群搭建,需要6个实例,三个是主节点,三个是从节点,数量为6个节点才能保证高可用的集群。

  每个节点仅仅是端口运行的不同!

   

   2、准备ruby 环境

    分配redis集群状态,以及槽位分配,互联网企业,豆瓣公司开源的一个工具

    1.   下载、编译、安装Ruby
    2.   安装rubygem redis
    3.   安装redis-trib.rb命令

    第一步,安装ruby(这些命令可以放入一个sh脚本文件里)

# 下载ruby
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.gz

# 安装ruby
tar -xvf ruby-2.3.1.tar.gz
cd ruby-2.3.1/
./configure --prefix=/opt/ruby/
make && make install

# 配置ruby的环境变量
vim /etc/profile
写入如下配置
PATH=$PATH:/opt/ruby/bin

# 准备一个ruby命令
# 准备一个gem软件包管理命令
# 拷贝ruby命令到path下/usr/local/ruby
cp /opt/ruby/bin/ruby /usr/local/
cp bin/gem /usr/local/bin

  安装ruby gem 包管理工具

wget http://rubygems.org/downloads/redis-3.3.0.gem

gem install -l redis-3.3.0.gem

#查看gem有哪些包
gem list -- check redis gem

  

  一键开启redis-cluster集群

redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
或
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

--replicas  # 表示进行身份授权
1  # 表示每个主节点,只有一个从节点

# 集群会自动分配主从关系  70007001、7002为主服务器master 70037004、7005为从服务器slave
复制代码

  查看集群状态

redis-cli -p 7000 cluster info  

redis-cli -p 7000 cluster nodes  #等同于查看nodes-7000.conf文件节点信息

集群主节点状态
redis-cli -p 7000 cluster nodes | grep master
集群从节点状态
redis-cli -p 7000 cluster nodes | grep slave

    安装完毕后,检查集群状态

redis-cli -p 7000 cluster info

  测试写入集群数据,登录集群必须使用redis-cli -c -p 7000必须加上-c参数

 

 

 

 

 

posted @ 2019-11-14 15:58  上官若凌  阅读(216)  评论(0编辑  收藏  举报