31

语境

我有一个实时运行的 redis 服务器。

我想做一个备份。

主意:

我想做以下事情:

cp dump.rdb ~/some-other-location/06-24-2012.rdb ?

关心

我没有看到任何东西可以保证 dump.rdb 始终是一个一致的数据库存储。(也就是说,在我看来,当我执行 cp 时,redis 正在写入一些数据,因此 dump.rdb 处于不一致状态。)

问题:

这很糟糕,因为我现在必须关闭 redis 数据库才能制作 dump.rdb 的副本

问题:

在 redis-server 运行时,对数据库进行实时备份的正确方法是什么?手册的哪一部分向我保证,这种方法会创建一个处于一致(不是半写)状态的数据库。

谢谢!

4

2 回答 2

49

来自http://redis.io/topics/persistence

Redis 对数据备份非常友好,因为您可以在数据库运行时复制 RDB 文件:RDB 一旦生成就永远不会修改,并且在生成时它使用临时名称并仅使用 rename(2) 以原子方式重命名为最终目标当新快照完成时。

因此,正确的方法是简单地将 dump.rdb 复制到您的备份位置。

于 2012-06-25T06:00:08.263 回答
2

如果您使用 Amazon S3,使用s3cmd工具备份 Redis 数据库非常简单。

s3cmd: http ://s3tools.org/s3cmd

教程: http: //guchex.com/viniciusfbm/post/50/how-to-backup-redis-database-encrypted-to-s3-via-command-line-ubuntu

于 2013-02-23T11:29:20.490 回答