一.RDB(Redis DataBase)
1.是什么:指定时间间隔内将内容中的数据集快照写入磁盘
2:做法:使用子进程frok(临时文件)结束后替换上次持久化好的文件,主进程不进行任何io操作,性能很高,对数据完成性不敏感,容易丢失最后最后一次持久化的数据。
3.持久化文件:
redis.conf文件中设置的
在redis.conf中配置文件名称,默认为dump.rdb
在配置文件中有默认的快照设置
4.RDB数据备份
1.将dump.rdb文件拷贝一份
2.将redis服务断开
3.将dump.rdb文件删除,再将之前拷贝好的文件改名
4.打开redis会自动读取dump.rdb文件中的内容
5.RDB的优势和劣势
优势:适合大规模的数据恢复
对数据完整性和一致性要求不高更适合使用
节省磁盘空间
恢复速度快
劣势:Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑。
虽然Redis在fork时使用了写时拷贝技术,但是如果数据庞大时还是比较消耗性能。
在备份周期在一定间隔时间做一次备份,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。
6.RDB总结
内存中数据通过 RDBsave保存到磁盘
磁盘中的rdb文件通过RDBload加载到内存
二.AOF(Append Only File)
使用日志形式通过追加的方式记录写操作记录指令不记录读指令
AOF持久化过程
1.客户端的指令会被追加(append)到AOF缓冲区中
2.AOF缓冲区根据持久化策略[always,eversec,no]同步到磁盘AOF文件中
3.AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量
<1>set a a <2>set b b 重写 set a a b b
重写大于100%只记录结果
4.Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的
AOF默认不开启
可以在redis.conf中配置文件名称,默认为 appendonly.aof
AOF文件的保存路径,同RDB的路径一致。
AOF异常恢复
如遇到AOF文件损坏,通过/usr/local/bin/redis-check-aof–fix appendonly.aof进行恢复
备份被写坏的AOF文件
恢复:重启redis,然后重新加载
AOF总结
优势:备份更加稳健(优先级比RDB高)
可处理误操作
劣势:比起RDB占用更多的磁盘空间。
恢复备份速度要慢。
每次读写都同步的话,有一定的性能压力。
三.主从复制
主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主
功能:1.读写分离。2.容灾快速恢复
1.查看运行状况
info replication
打印主从复制的相关信息
2.配主库
slaveof
成为某个实例的从服务器
从机重启会独立成为主机(再次连接原来的主机数据会从头恢复)
主机重启会回到主的位置从机不会上位
反客为主
当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。
用 slaveof no one 将从机变为主机。
运行过程
1从机连接到主机会发送数据同步消息(sync)
2.主机接收到消息会将rdb文件发送到从服务器
3.第一次连接接受文件数据为全量复制,而后接受修改命令为增量复制。
哨兵模式
监控主机是否故障,投票自动将从库转位主库
配置哨兵
sentinel monitor mymaster 127.0.0.1 6379 1
其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。
启动哨兵
在bin目录下执行 redis-sentinel sentinel.conf
选择条件:
1.优先级靠前的(数字小)优先级在redis.conf中默认:slave-priority 100,值越小优先级越高
2.偏移量大的 偏移量是指获得原主机数据最全的
3.runid最小的服务 每个redis实例启动后都会随机生成一个40位的runid