简单粗暴的Redis数据备份和恢复方法
作者:Hunk Shi
这里我们来讲解一个简单粗暴的Redis数据备份和恢复方法,有一个在不同主机上迁移Redis数据的示例,还有一个备份脚本实现的关键点提示,一起来看一下:
示例
目标:把服务器CentOS上的redis数据复制到Mac机上
步骤:
在CentOS上找dump文件位置
vi /etc/redis.conf dbfilename dump.rdb dir /var/lib/redis
说明文件在
/var/lib/redis/dump.rdb
在mac上查找dump文件位置
vi /usr/local/etc/redis.conf dbfilename dump.rdb dir /usr/local/var/db/redis
拷贝服务器上的dump.rdb到mac机器
scp root@dv:/var/lib/redis/dump.rdb ./
在mac上重启Redis
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.redis.plist launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
PS:备份脚本
看如下脚本,
#! /bin/bash PATH=/usr/local/bin:$PATH redis-cli SAVE date=$(date +"%Y%m%d") cp /var/lib/redis/6379/dump.rdb /data01/cache_backup/$date.rdb echo "done!"
有如上脚本,便可以cron等方式备份redis数据文件了。细节如下:
首先必须进行SAVE, 因为redis的rdb文件并非总是内存数据的完整镜像,备份之前必须进行SAVE,即向其发送SAVE命令,其次拷贝走其rdb文件即可。
rdb的具体路径不一定是如上路径,可以在redis配置文件中查找, /etc/redis/6379.conf
# The filename where to dump the DB dbfilename dump.rdb # The working directory. # # The DB will be written inside this directory, with the filename specified # above using the 'dbfilename' configuration directive. # # Also the Append Only File will be created inside this directory. # # Note that you must specify a directory here, not a file name. dir /var/lib/redis/6379