在使用redis时,在dump.rdb 文件同目录下出现了temp-xxx.rdb文件怎么回事?
当redis触发rdb的持久化之后,如果内存中的redis数据太大,会临时存储到temp-pid.rdb文件,最后再从temp-pid.rdb文件copy到你redis设置的rdb持久化文件中。
查看redis进程
$ ls -l /proc/$(pidof redis-server)/cwd
RDB 是基于时间的快照,只保留当前最新的一次快照。
优点:执行的速度比较快
缺点:可能丢失数据(从上次快照到当前快照未完成之间的数据)
RDB 实现数据备份的过程:
1.redis 从主进程中先fork 一个子进程,采用写时复制机制
2.子进程将内存中的数据保存为一个临时文件,dump.rdb.temp,当数据保存完成之后再将上次保存的RDB 文件替换掉
3.关闭子进程
说明: 如果直接替RDB 文件的时候就可能会出现突然断电等问题而导致RDB 文件还么有保存完整就突然关机,从而导致数据的丢失,可以手动将每次生成的RDB 文件进行备份,这样可以最大化保存历史数据。
参考
Two rdb files in /var/lib/redis dir
https://stackoverflow.com/questions/54824752/two-rdb-files-in-var-lib-redis-dir
How to save only one database in Redis?
https://stackoverflow.com/questions/44370279/how-to-save-only-one-database-in-redis
Redis Persistence
https://redis.io/topics/persistence
网友评论