redis的发布订阅、持久化存储、redis的主从复制

redis的发布订阅

1. 创建redis配置文件

vim /opt/redis_conf/reids-6379.conf

mkdir /data/6379

redis-server  redis-6379.conf     # 开启redis 6379 服务端

resdis-cli -p 6379   # 进入redis 6379 的客户端  (需要开启6379 下的3个redis客户端)

发布者:

redis的发布订阅、持久化存储、redis的主从复制

接收者:

redis的发布订阅、持久化存储、redis的主从复制

持久化存储

1.RDB持久化配置

redis是一个内存型的数据库

断电数据会消失

重启服务数据会消失

重启服务器数据会消失

1. 创建redis配置文件

vim /opt/redis_conf/reids-.conf

写入以下配置

port
daemonize yes
dir /data/
pidfile /data//redis.pid
loglevel notice
logfile "/data/6379/redis.log"
protected-mode yes
dbfilename dbmp.rdb
save
save
save

参数说明:

redis的发布订阅、持久化存储、redis的主从复制

mkdir /data/6380

redis-server  redis-6380.conf     # 开启redis 6380 服务端

resdis-cli -p 6380   # 进入redis 6380 的客户端

创建几条数据,并使用save命令开启rdb持久化

redis的发布订阅、持久化存储、redis的主从复制

redis的发布订阅、持久化存储、redis的主从复制

# 实现持久化和检查持久化生效的过程:
查看redis8380是否启动 netstat -tunlp |grep set name deng save # 持久化保存 netstat -tunlp |grep kill # 将该进程杀死,停用redis 服务 查看 redis 数据是否已经保存 redis-server redis-.conf # 开启redis6380 redis-cli -p # 进入6380 客户端 keys *

2.redis AOF持久化

1 修改reids配置文件

vim /opt/redis_conf/redis-6380.con

加入以下两行配置

appendonly yes
appendfsync everysec

redis的发布订阅、持久化存储、redis的主从复制

保存退出

2 重启redis服务

pkill reids
redis-server /opt/redis_conf/redis-6380.conf

3 验证appendonly.aof文件里面的数据和redis里面的数据是否健在

客户端添加数据:

redis的发布订阅、持久化存储、redis的主从复制

redis的发布订阅、持久化存储、redis的主从复制

3 redis不重启,从RDB切换到AOF

1 配置RDB持久化,确保没有AOF的配置

daemonize yes
port
logfile /data//redis.log
dir /data/
dbfilename dbmp.rdb
save #rdb机制 每900秒 有1个修改记录
save #每300秒 10个修改记录
save #每60秒内 10000修改记录

redis的发布订阅、持久化存储、redis的主从复制

2. 删除上面演示已经持久化储存的文件

redis的发布订阅、持久化存储、redis的主从复制

3.启动redis服务端

redis的发布订阅、持久化存储、redis的主从复制

redis的发布订阅、持久化存储、redis的主从复制

4.检查RDB文件

redis的发布订阅、持久化存储、redis的主从复制

5 备份RDB文件

redis的发布订阅、持久化存储、redis的主从复制

6 执行命令,开启AOF持久化

CONFIG set appendonly yes   # 开启AOF功能

CONFIG SET save ""          # 关闭RDB功能

redis的发布订阅、持久化存储、redis的主从复制

7 验证旧的RDB数据库数据是否转入AOF, 以及AOF持久化文件是否正常写入

redis的主从复制

应用:负载均衡,故障切换,读写分离

1 准备三个redis配置文件

cd /opt/redis_conf

redis-.conf   # 主数据库master
redis-.conf # 从库slave
redis-.conf # 从库slave

2. 配置文件:

vim /opt/redis_conf/redis-.conf

写入以下配置:

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

redis的发布订阅、持久化存储、redis的主从复制

3 目前这三个配置文件配置一样,只是端口的不同

#可以使用这一条命令通过redis-.conf生成6381和6382的配置文件
sed "s/6380/6381/g" redis-.conf > redis-.conf
sed "s/6380/6382/g" redis-.conf > redis-.conf
#
mkdir /data/{6381,8382}

redis的发布订阅、持久化存储、redis的主从复制

4. 在redis-6381.conf和redis-6382.conf下添加以下配置,使之成为从数据库:

# 添加下面这句到redis-6381.conf和redis-6382.conf配置下
slaveof 127.0.0.1

redis的发布订阅、持久化存储、redis的主从复制

5.  确认三个配置文件无误

cat redis-.conf
cat redis-.conf
cat redis-.conf

6 开启这三个redis服务,确保三个服务启动正常

redis-server redis-.conf
redis-server redis-.conf
redis-server redis-.conf

redis的发布订阅、持久化存储、redis的主从复制

7 查看redis主从数据库的状态

redis-cli -p  info replication
redis-cli -p info replication
redis-cli -p info replication

redis的发布订阅、持久化存储、redis的主从复制

redis的发布订阅、持久化存储、redis的主从复制

8 验证redis主从复制情况

(1)先验证三个数据库是否能正常连接

主库 6380 :

redis的发布订阅、持久化存储、redis的主从复制

从库 6381:

redis的发布订阅、持久化存储、redis的主从复制

从库6382:

redis的发布订阅、持久化存储、redis的主从复制

9 手动进行主从复制故障切换

(1) 杀掉6380的进程,模拟主库故障

  kill -9 进程ID
redis的发布订阅、持久化存储、redis的主从复制
redis的发布订阅、持久化存储、redis的主从复制

(2)在6381和6382上手动指定一个主库(我现在指定6382为主库)

(3) 在6382的redis上执行这一行命令

slaveof no one

redis的发布订阅、持久化存储、redis的主从复制

(4) 在6381上执行以下命令,将原来的指向6380改为指向6382

slaveof no one
slaveof 127.0.0.1

redis的发布订阅、持久化存储、redis的主从复制

(5) 验证新的主从架构状态

redis的发布订阅、持久化存储、redis的主从复制

redis的发布订阅、持久化存储、redis的主从复制

(6) 验证新的主从架构是否可以正常写入数据,同步数据

主库6382 中写入数据:

redis的发布订阅、持久化存储、redis的主从复制

从库6381 中查看数据:

redis的发布订阅、持久化存储、redis的主从复制

 
上一篇:java udp服务器设计源码


下一篇:oracle触发农产品证明文件号码