Redis数据持久化,及实现方式( 四 )


回到顶部
v备份数据
? 备份Redis数据
在阅读这个小节前,先将下面这句话铭记于心: 一定要备份你的数据库!
磁盘故障,节点失效,诸如此类的问题都可能让你的数据消失不见,不进行备份是非常危险的 。
Redis 对于数据备份是非常友好的,因为你可以在服务器运行的时候对 RDB 文件进行复制: RDB 文件一旦被创建,就不会进行任何修改 。当服务器要创建一个新的 RDB 文件时,它先将文件的内容保存在一个临时文件里面,当临时文件写入完毕时,程序才使用 rename(2) 原子地用临时文件替换原来的 RDB 文件 。
这也就是说,无论何时,复制 RDB 文件都是绝对安全的 。
以下是我们的建议:

  • 创建一个定期任务(cron job),每小时将一个 RDB 文件备份到一个文件夹,并且每天将一个 RDB 文件备份到另一个文件夹 。
  • 确保快照的备份都带有相应的日期和时间信息,每次执行定期任务脚本时,使用 find 命令来删除过期的快照: 比如说,你可以保留最近 48 小时内的每小时快照,还可以保留最近一两个月的每日快照 。
  • 至少每天一次,将 RDB 备份到你的数据中心之外,或者至少是备份到你运行 Redis 服务器的物理机器之外 。
? 容灾备份
Redis 的容灾备份基本上就是对数据进行备份,并将这些备份传送到多个不同的外部数据中心 。
容灾备份可以在 Redis 运行并产生快照的主数据中心发生严重的问题时,仍然让数据处于安全状态 。
  • Amazon S3,以及其他类似 S3 的服务,是一个构建灾难备份系统的好地方 。最简单的方法就是将你的每小时或者每日 RDB 备份加密并传送到 S3。对数据的加密可以通过 gpg -c 命令来完成(对称加密模式) 。记得把你的密码放到几个不同的、安全的地方去(比如你可以把密码复制给你组织里最重要的人物) 。同时使用多个储存服务来保存数据文件,可以提升数据的安全性 。
  • 传送快照可以使用 SCP 来完成(SSH 的组件) 。以下是简单并且安全的传送方法: 买一个离你的数据中心非常远的 VPS,装上 SSH,创建一个无口令的 SSH 客户端 key,并将这个 key 添加到 VPS 的 authorized_keys 文件中,这样就可以向这个 VPS 传送快照备份文件了 。为了达到最好的数据安全性,至少要从两个不同的提供商那里各购买一个 VPS 来进行数据容灾备份 。
需要注意的是,这类容灾系统如果没有小心地进行处理的话,是很容易失效的 。
最低限度下,你应该在文件传送完毕之后,检查所传送备份文件的体积和原始快照文件的体积是否相同 。如果你使用的是 VPS,那么还可以通过比对文件的 SHA1 校验和来确认文件是否传送完整 。
另外,你还需要一个独立的警报系统,让它在负责传送备份文件的传送器(transfer)失灵时通知你 。
作 者:请叫我头头哥
出 处:http://www.cnblogs.com/toutou/
关于作者:专注于基础平台的项目开发 。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接 。
特此声明:所有评论和私信都会在第一时间回复 。也欢迎园子的大大们指正错误,共同进步 。或者直接私信我

【Redis数据持久化,及实现方式】


推荐阅读