强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan
两种持久化机制 |
2.配置
触发持久化的机制有手动触发和自动触发。
执行bgsave命令即可,执行了bgsave命令后的具体流程如下:
编辑配置文件: vim /etc/redis/6379.conf文件,手动配置检查点,一条save配置代表一个检查点,redis默认的机制是RDB所以不涉及开启或不开启,我们只需要配置生成快照的时间方式即可,redis中默认有三条,我们可以自己根据实际业务需求设置时间,例如,我想每隔5s,只要有一条数据更新就生成快照
appendonly yes
b.配置rewrite
在/etc/redis/6379.conf文件中有两个配置,auto-aof-rewrite-percentage和auto-aof-rewrite-min-size
第一条命令的意思是,当aof日志文件中的大小大于上一次的一倍了,那就执行rewrite
第二条意思是,就算满足了第一条的条件,但是还是需要和auto-aof-rewrite-min-size配置的值进行比较,当aof的大小大于64m时才会进行rewrite操作
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
c.AOF的三种写入方式,使用默认的everysec即可,即,每秒写入一次
# appendfsync always
appendfsync everysec
# appendfsync no
Redis备份与容灾 |
#!//bin/sh
cur_date=`date +%Y%m%d%k`
rm -rf /usr/local/redis/snapshotting/$cur_date
mkdir -p /usr/local/redis/snapshotting/$cur_date
cp /var/redis/6379/dump.rdb /usr/local/redis/snapshotting/$cur_date
del_date=`date -d -48hour +%Y%m%d%k`
rm -rf /usr/local/redis/snapshotting/$del_date
通过crotab定时器执行备份脚本:
使用命令crotab -e打开定时器文件,在其中加上执行时间的任务:
0 * * * * sh /usr/local/redis/copy/redis-rdb-copy-hourly.sh
这样有了定时器就会每小时执行一份备份,当我们redis意外停止,数据丢失时,可以通过最新的备份恢复数据
数据恢复方案
a.如果是redis进程挂掉,那么重启redis进程即可,直接基于AOF日志文件恢复数据
b.如果是redis进程所在机器挂掉,那么重启机器后,尝试重启redis进程,尝试直接基于AOF日志文件进行数据恢复
c.如果redis当前最新的AOF和RDB文件出现了丢失/损坏,那么可以尝试基于该机器上当前的某个最新的RDB数据副本进行数据恢复
①停止redis(命令是redis-cli shutdown),
②在配置文件中关闭aof: appendonly no
③拷贝rdb日志备份到/var/redis/6379目录下
④启动redis(命令是,先到目录/etc/init.d/目录下, ./redis_6379)
⑤尝试get一个key,确认数据恢复
⑥命令热修改redis配置,使用redis-cli连接redis,使用命令redis config set appendonly yes打开aof方式,这样aof和rdb数据就一致了
⑦手动修改6379.conf配置文件中appendonly为yes,因为热修改暂时不会写到配置文件中,所以需要手动修改,然后启动redis,再次确认数据恢复
d.如果当前机器上的所有RDB文件全部损坏,那么从远程的云服务上拉取最新的RDB快照回来恢复数据
c.如果是发现有重大的数据错误,就找最新的并且无错的进行恢复