redis备份(redis备份rdb文件小)
本篇文章给大家谈谈redis备份,以及redis备份rdb文件小对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、高并发redis - 持久化备份方案
- 2、移动云云数据库Redis在数据安全方面有哪些优点?
- 3、Loki 日志系统分布式部署实践三 redis
- 4、windows 中如何 redis 备份恢复 知乎
- 5、Redis切换为AOF不丢数据的正确步骤
高并发redis - 持久化备份方案
redis几乎是我们在实际开发过程中提升效率必须用到的工具,特别在高并发场景下,
redis号称单机10w+qps,除了高qps,数据安全也是一个系统必须考虑的部分,
redis数据持久化是保证数据安全一个重要环节,所以现在就来讨论一下redis持久化相关内容。
rdb的优点:
首先在生产环境,aof和rdb都是必须打开的,因为数据安全的重要性不言而喻,保证数据的最少丢失。
一般都是配套使野贺用
相关脚本
redis_rdb_copy_daily.sh 备份30天
redis_rdb_copy_hourly.sh 48小时的
添加定时器脚本
测试sh脚本方法为,手动执行这两个sh脚本,自定义时间,看能不能在对应文件夹颂液派生成文件。
注意:这里直说冷备方案,因为后面会将主从复制和哨兵之类的,通过节点切换来完成热备份高可用。
用docker起动单个redis:redis.conf放在/data/redis/redis.conf
redis.conf
docker启动脚本
启动后埋大进入容器,随便设置几个key,然后退出来,就会发现,/data/redis 下面就会多出了rdb,aof,log等文件
5、容灾演练
模拟redis直接挂掉,然后进行数据恢复的过程。
移动云云数据库Redis在数据安全方面有哪些优点?
移动云云数据库Redis在数据安全方面有以下几个优点:
1、数据加密:Redis支持对数据进行加密,保证数据传输和存储的安全性,能够防止敏感数据泄露和数据被篡改。
2、访问控制:Redis支持多种认证和访问控制机制,例如IP白名单、密码认证等,可以限制数据库的访问权限,保护数据的乎衫首安全性。
3、数据备份和恢复:Redis支持自动备份和手动备份机制,可以将数据备份到云端存储或者本地存储中,保证数据不会丢失,同时还支持数据恢复功能,可以快速恢复因误操作或其他原因造成的数据损失。
4、数据迁移:Redis支持数据迁移功能,可以将数据从塌瞎一个Redis实例迁移到另一个Redis实例,保证数据的安全性和完整性。
5、数据监控:Redis提供了实时的性能监控和日志记录功能,可以对数据库进行全面监控和分析,及时发现和处理可能存在的安全问题,保证岁数数据的安全性和稳定性。
综上所述,移动云云数据库Redis在数据安全方面有着很多优点,通过这些安全措施,可以有效保护数据的安全性和完整性,提高数据库的可靠性和稳定性。
Loki 日志系统分布式部署实践三 redis
这里支持 redis 主从、哨兵、集群三种模式,我这里选择主从即可,集敏核群模式测试异常,没能解决
安装 redis 主从模式:
编写配置文件:
安装:
查看密码:
连接 master:
连接 slave:
读写分离:
读写:
只读:
错误 1:
解决:
参考:
参考:
参考:
注意:Kubernetes 1.12+ 可以使用 securityContext.sysctls 来设置 pod 的 sysctl,而不需要 initContainer 了:
错误 2:
解决:
使用 initContainer 去修改 sysctl 的方案在生产环境正常,这里却报错了,应该是 securityContext 或 PSP 的问题,这里没有启用 PSP,那就剩下 securityContext 了:
我这里尝试写入如下权限,最终都被修改掉了:
这里暂时没有找到解决方案,但是发现虽然报错了,下面 sysctl 修改是生效了的,因为日志不再报错了
错误 3:
解决:
因为 bitnami/minideb:buster 镜像里没有 sysctl
方法一:替换镜像
方法二:直接安装包,但是这个比较慢
错误 4:
解决:
参考:
参考:
注意:它将修改调度了容器的节点的内核设置,从而影响该节点上运行的其他容器。这就是为什么您需要运行特权的 initContainer 或设置 securityContext.sysctls 的原因。
错误 5:
解决:
因为将宿主机的 /sys 挂载到容器内的路径变成了 /host-sys
所以要修改路径:
错误 6:
解决:
这里暂时看不受影响
错误 7:
解决:
因为 master 挂掉了
错误 8:
解决:
Redis 提供两种相对有效的备份方法:
利用 RDB 快照的持久化方式不是非常可靠,当运行 Redis 的计算机停止工作、意外掉电、意外杀掉了 Redis 进程那么最近写入 Redis 的数据将会丢。对于某些应用这或许不成问题,但对于持久化要求非常高的应用场景快照方式不是理想的选择。
利用 AOF 文件是一个替代方案,用以最大限度的持久化数据。同样,可以通过配置文件来开闭 AOF。
打开 AOF 持久化功能后,Redis 处理完每个事件后会调用 write(2) 将变化写入 kernel 的 buffer,如果此时 write(2) 被阻塞,Redis 就不能处理下一个事件。
Linux 规定执行 write(2) 时,如果对同一个文件正桥租掘在执行 fdatasync(2) 将 kernel buffer 写入物理磁盘,或者有 system wide sync 在执行,write(2) 会被 Block 住,整个 Redis 被 Block 住。
如果系统 IO 繁忙,比如有别的型敏应用在写盘,或者 Redis 自己在 AOF rewrite 或 RDB snapshot(虽然此时写入的是另一个临时文件,虽然各自都在连续写,但两个文件间的切换使得磁盘磁头的寻道时间加长),就可能导致 fdatasync(2) 迟迟未能完成从而 Block 住 write(2),Block 住整个 Redis。
为了更清晰的看到 fdatasync(2) 的执行时长,可以使用下面命令跟踪,但会影响系统性能:
Redis 提供了一个自救的方式,当发现文件有在执行 fdatasync(2) 时,就先不调用 write(2),只存在 cache 里,免得被 Block。但如果已经超过两秒都还是这个样子,则会硬着头皮执行 write(2),即使 redis 会被 Block 住。
此时那句要命的 log 会打印:Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis.
之后用 redis-cli INFO 可以看到 aof_delayed_fsync 的值被加 1。
因此,对于 fsync 设为 everysec 时丢失数据的可能性的最严谨说法是:
如果有 fdatasync 在长时间的执行,此时 redis 意外关闭会造成文件里不多于两秒的数据丢失。
如果 fdatasync 运行正常,redis 意外关闭没有影响,只有当操作系统 crash 时才会造成少于 1 秒的数据丢失。
方法一:关闭 AOF
如果采用 redis 主从 + sentinel 方式的话,主节点挂了从节点会自己提升为主点,主节点恢复后全量同步一次数据就可以了,关系也不是太大
方法二:修改系统配置
原来是 AOF rewrite 时一直埋头的调用 write(2),由系统自己去触发 sync。默认配置 vm.dirty_background_ratio=10,也就是占用了 10% 的可用内存才会开始后台 flush
而我的服务器有 8G 内存,很明显一次 flush 太多数据会造成阻塞,所以最后果断设置了sysctl vm.dirty_bytes=33554432(32M) 问题解决
错误 9:
解决:
看着是启动的时候加载 AOF 文件到内存,然后被 liveness 杀掉了
随着命令不断写入 AOF,文件会越来越大,为了解决这个问题,redis 引入了 AOF 重写机制压缩文件。文件能缩小的原因是:
AOF 重写可以手动触发和自动触发:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 16mb
所以这里处理下,控制 AOF 文件大小:
注意:这里依旧没能解决问题,文件依旧很大,而且会造成大量的磁盘 IO,最终导致 redis 失去响应
彻底解决:
之后 dump.rdb 文件一直稳定在 255M
windows 中如何 redis 备份恢复 知乎
Redis SAVE 命令用于创建当前数据库的备份
下面建立一个set集逗凳脊合,然后备份粗碰,删山渗除集合中"if exists , i can backup"值,再恢复,当看到"ifexists , i can backup"值时,说明则说明备份和恢复都成功。
建立集合test_backup
127.0.0.1:6379 sadd test_backup "backup"
(integer) 1
127.0.0.1:6379 sadd test_backup "if exists , i can backup"
(integer) 1
127.0.0.1:6379 smembers test_backup
1) "if exists , i can backup"
2) "backup"
备份
127.0.0.1:6379 save
OK
查看备份文件(默认存放在redis的安装目录中)
[root@localhost src]# ll *.rdb
-rw-r--r--. 1 root root 361 Oct 31 10:31dump.rdb
[img]Redis切换为AOF不丢数据的正确步骤
因为AOF丢失数据的概率更低,因此如果对Redis中数据的完整性要求高的话,通常会启用AOF。但是由于启用AOF之后,重启Redis,默认就会逗卜亮从aof恢复数据,就会忽略dump.rdb中的数据,就会造成重启之前数据的丢失,因此Redis从RDB向AOF切换的时候要使用如下步骤:
1)把redis配置文山宽件启用AOF,比如appendonly设置为yes;建议把appendfsync设置为everysec,这样一秒同步一次,性能不会像always那样差,而且最多丢一秒钟的数据。其他配置请参考其他资料。
注意:只是修改配置文件,先不要停止或者重启redis服务。
2)Redis CLI中执行save,以便把数据全部写入dump.rdb,这是一步备份操作。以便于万一aof失败,还能到dump.rdb中把数据恢复回来。
3)Redis CLI中执行bgrewriteaof ,从而把数据写入.aof,便于下次以aof启动的时候加载数据。
4)aof写入完成后,重启Redis服务器即可。
5)如果启动后数据正常,rdb就没用了,愿意删就删。
关键的一步就是在配置启用弊尺aof并且重启服务器之前,要先执行bgrewriteaof。
关于redis备份和redis备份rdb文件小的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。