redis学习(二)

持久化RDB操作在这里插入图片描述
修改一下redis.conf配置,60秒修改5个值就会触发保存。
执行flushall命令,也会触发rdb规则
退出redis,也会产生rdb文件
备份就会生成一个dump.rdb
在这里插入图片描述只需要在启动目录/usr/local/bin 这个目录下面 ,redis启动的时候就会自动检查恢复dump.rdb恢复其中的数据

rdb优点:适合大规模的数据恢复!
			对数据完整性不高 
缺点·:需要一定的时间间隔进程操作!如果redis意外宕机,这个最后一次修改的数据就没了
 frok进程的时候会占用一定的内存空间

AOF

将我们的所有命令记录下来,history,恢复的时候就把这个文件全部执行一遍

以日志的形式来记录每个写操作,将redis执行过程所有指令记录下来,只许追加文件但不可以改写文件,redis启动之处会读取该文件重新构建数据。
在这里插入图片描述

打开redis,然后写入数据,关闭之后在这里插入图片描述

可以看见自己写的命令
修改上面的文件

 redis-check-aof --fix appendonly.aof 

在这里插入图片描述
优点:
1.每一次修改都同步,文件的完整性会更加的好
2.每秒都会同步一次,可能会丢失一秒的数据
3.从不同步,效率最高
缺点:
1.相对于数据文件来说,aof远远大于rdb,修复速度也比rdb慢
2.aof运行效率也要比rdb慢,所以我们redis默认配置就是rdb
最后需要自己把配置改回去。。

redis主从复制
主从复制,读写分离。大部分多是读操作,减缓服务器的压力。
主从复制主要包括
1.数据冗余
2.故障修复
3.负载均衡
4.高可用
数据复制是单向的,只能由主节点到从节点。

127.0.0.1:6379> info replication  #查看当前库的信息
# Replication
role:master   #角色
connected_slaves:0 #没有从机
master_replid:4074492b5c0a215b884b72371a28d6ffa4e2d9f0
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

我使用的是虚拟机,这里搭的是伪集群,在连接几台服务器,复制redis.conf,就像下图一样吧。。。
在这里插入图片描述

[root@localhost whconfig]# ls
redis.conf
[root@localhost whconfig]# cp redis.conf  redis79.conf
[root@localhost whconfig]# cp redis.conf  redis80.conf
[root@localhost whconfig]# cp redis.conf  redis81.conf
[root@localhost whconfig]# ls
redis79.conf  redis80.conf  redis81.conf  redis.conf

vim redis79.conf  #修改这个配置文件

这两个配置需要修改

logfile "6379.log"  
dbfilename dump6379.rdb

vim redis80.conf  #同理修改这个配置文件 
port 6380 #修改端口
pidfile /var/run/redis_6380.pid
logfile "6380.log"
dbfilename dump6380.rdb

同理6381也需要一样的修改

[root@localhost bin]# redis-server whconfig/redis79.conf 
[root@localhost bin]# redis-server whconfig/redis80.conf 
[root@localhost bin]# redis-server whconfig/redis81.conf 

可以看机有三个log

[root@localhost bin]# ls
6379.log  6380.log  6381.log  appendonly.aof  dump.rdb  redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server  whconfig

也查看进程

[root@localhost bin]# ps -ef |grep redis
root      29009      1  0 11:18 ?        00:00:00 redis-server 0.0.0.0:6379
root      32560      1  0 11:18 ?        00:00:00 redis-server 0.0.0.0:6380
root      33546      1  0 11:18 ?        00:00:00 redis-server 0.0.0.0:6381
root      40498  14265  0 11:20 pts/2    00:00:00 grep --color=auto redis

一主二从
1centos7
没有配置,每一个都是主节点

[root@localhost bin]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:496b85545b2034bd41c3f4372892c830ae9f1282
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

2centos7

[root@localhost bin]# redis-server whconfig/redis80.conf 
[root@localhost bin]# redis-cli -p 6380
127.0.0.1:6380> ping
PONG
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:0
master_replid:09fd735f1a47ba12cc326b5ec00eccf214e4caf5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

第三台机器也一样的操作
3centos7

[root@localhost bin]# redis-server whconfig/redis
88873:C 27 Apr 2022 11:29:44.599 # Fatal error, can't open config file 'whconfig/redis'
[root@localhost bin]# redis-server whconfig/redis81.conf 
[root@localhost bin]# redis-cli -p 6381
127.0.0.1:6381> ping
PONG
127.0.0.1:6381> info replication
# Replication
role:master
connected_slaves:0
master_replid:a436a84445d7a3accba5e2cf04bd3e35aaa8663d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

配置从机
2centos7

127.0.0.1:6380> SLAVEOF 127.0.0.1 6379   
OK
127.0.0.1:6380> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:0
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:80fb6d40da4cdc2c42d456a43e266d2ff727b629
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte

3centos72centos7一样的操作
如果两个配置完成就会:

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=630,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=630,lag=0

也可以通过文件进行配置,大概在280行左右吧(坐个参考吧。。。)
这样永久生效,可以看见ip 和端口

# replicaof <masterip> <masterport>

# If the master is password protected (using the "requirepass" configuration
# directive below) it is possible to tell the replica to authenticate before
# starting the replication synchronization process, otherwise the master will
# refuse the replica request.
#
# masterauth <master-password>

主机可以写,从机只能读
主机断开连接,从机依旧连接到主机,但是没有写操作

当把第三个主机的主节点分为第二个主机
就会形成

主节点 ------从节点/主节点---------从节点

但是中间那个还是不能写入。
当第一个节点断开的是时候,在第二个节点输入

SLAVEOF no one

就会让这个节点成为主机

127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6381,state=online,offset=1134,lag=0
master_replid:bd3b8c7606b597c9c2586421b1b1b4f8e3881634
master_replid2:9cf481a8df5b7c880a95828162e8585a857053f6
master_repl_offset:1134
second_repl_offset:1121
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1134

当第二个节点为主机的时候,其他的节点就可以成为他的从机

哨兵模式
自动选取主机的模式
在主从切换技术的方法是:当主服务器宕机后,需要手动把一台服务器切换为主服务器,这就需要人工干预,费时费力,还会造成一段时间的服务器不能使用,这不是一种推荐的模式,所以很多时候,需要优先考虑哨兵模式
切回到一主二从
在配置文件下建一个

vim sentinel.conf
sentinel monitor myredis 127.0.0.1 6379 1

启动哨兵

redis-sentinel whconfig/sentinel.conf 

端口主机6379那台主机关掉

128928:X 27 Apr 2022 15:56:13.233 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6380
128928:X 27 Apr 2022 15:56:13.233 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6380
128928:X 27 Apr 2022 15:56:43.265 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6380

自动主节点转到6380
如果master节点断开,这时候就会从机选择一个主服务器
当6379这个服务重新启动,就会变为6380的从机
哨兵模式
优点:
1.基于主从复制模式,所有的主从配置优点,都有
2.主从可以切换,故障可以转移,系统的可用性就会更好
3.哨兵模式就是主从模式的升级版,自动化,更加健壮。
缺点:
1.不好扩容,集群到达上限,扩容很麻烦
2.实现哨兵模式的配置很麻烦,里面有很多选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值