数据备份与恢复
数据备份与恢复是确保数据安全的重要步骤,特别是在使用 Redis 等 NoSQL 数据库时。Redis 提供了两种持久化选项,分别是 RDB 和 AOF。本文将详细介绍 RDB 和 AOF 的工作原理、优缺点、配置方法及恢复数据的步骤。
一、RDB 持久化
RDB(Redis Database)是一种快照持久化方式, Redis 的数据集保存在一个二进制文件 dump.rdb 中。默认情况下,Redis 每 60 秒刷新到 disk 一次,例如 save 60 10000 当有 1w 条 keys 数据被改变时。RDB 快照易恢复,文件也小,但是如果遇到宕机等情况的时候快照的数据可能会不完整。
可以手动调用 Save 或 BGSAVE 命令来生成快照,例如 `/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a pwd bgsave`。RDB 持久化的优点是恢复速度快、文件小巧,缺点是可能会丢失部分数据。
二、AOF 持久化
AOF(Append-Only File)是一种日志持久化方式,Redis 将所有写操作记录到日志文件中。在配置文件中打开 AOF 持久化,例如 `appendonly yes`。AOF 持久化的优点是安全性高、能够完全恢复数据,缺点是写操作慢、文件较大。
AOF 刷新日志到 disk 的规则有三种:
* `appendfsync always`:每次有写操作都进行同步,非常慢,非常安全。
* `appendfsync everysec`:对写操作进行累积,每秒同步一次,官方建议的策略。
* 手动执行 `bgrewriteaof` 命令来生成 AOF 文件,例如 `/usr/local/bin/redis-cli -h 127.0.0.1 -p 6379 -a pwd bgrewriteaof`。
三、主从配置
我们的做法是一主(Master)多从(Slave),主库不开启 AOF 持久化,只是每天备份一下 RDB 文件,而在从库上开启 AOF 备份,并且会用脚本将相应的备份文件推送到备份服务器。
四、数据恢复
当 Redis 服务器挂掉时,重启时将按照以下优先级恢复数据到内存:
* 如果只配置 AOF,重启时加载 AOF 文件恢复数据。
* 如果同时配置了 RBD 和 AOF,启动是只加载 AOF 文件恢复数据。
* 如果只配置 RBD,启动是讲加载 dump 文件恢复数据。
恢复时需要注意,要是主库挂了不能直接重启主库,否则会直接覆盖掉从库的 AOF 文件,一定要确保要恢复的文件都正确才能启动,否则会冲掉原来的文件。
五、结论
数据备份与恢复是确保数据安全的重要步骤,Redis 提供了 RDB 和 AOF 两种持久化选项,可以根据实际情况选择合适的持久化方式,并且需要注意恢复数据的步骤,以免出现数据丢失或冲突的情况。