linux使用shell脚本定期备份redis的rdb文件
一 redis相关命令
1、bgsave命令
redis bgsave 命令用于在后台异步保存当前数据库的数据到磁盘。bgsave命令执行之后立即返回 OK ,然后 redis fork 出一个新子进程,原来的 redis进程(父进程)继续处理客户端请求,而子进程则负责将数据保存到磁盘,然后退出。即:bgsave命令执行后,会创建一个进程,该进程会根据配置文件redis.conf的dir创建一个临时的rdb文件,等到redis内存的数据都存至这个临时的rdb文件之后,根据redis.conf的dbfilename选项重命名该rdb文件,也就是会覆盖原先的rdb文件。
2、info persistence信息查询命令
该命令会显示如下信息:
loading:0 #服务器是否正在载入持久化文件
rdb_changes_since_last_save:28900855 #离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化
rdb_bgsave_in_progress:0 #服务器是否正在创建rdb文件
rdb_last_save_time:1482358115 #离最近一次成功创建rdb文件的时间戳。当前时间戳 - rdb_last_save_time=多少秒未成功生成rdb文件
rdb_last_bgsave_status:ok #最近一次rdb持久化是否成功
rdb_last_bgsave_time_sec:2 #最近一次成功生成rdb文件耗时秒数
rdb_current_bgsave_time_sec:-1 #如果服务器正在创建rdb文件,那么这个域记录的就是当前的创建操作已经耗费的秒数
aof_enabled:1 #是否开启了aof
aof_rewrite_in_progress:0 #标识aof的rewrite操作是否在进行中
aof_rewrite_scheduled:0
需要关注的rdb_bgsave_in_progress信息字段,redis在bgsave期间该字段为1。即1表示redis服务器正在进行bgsave,0表示没有在bgsave。可以利用rdb_bgsave_in_progress字段判断服务器是否已经完成bgsave备份。
二 脚本相关命令
1、` 符号
`符号是英文下数字1左边的键,常用来括住包含多条命令的语句。使用如下:
[code]result=`redis-cli -p port -a password bgsave`
如果不使用该符号,上面这条语句会报错。因为如果没有 ` 符号bgsave会被当做一条linux命令执行,而bgsave是redis的操作命令。
2、awk命令详解
http://blog.chinaunix.net/uid-23302288-id-3785105.html
三 备份脚本
完整脚本如下:
[code]#!/bin/bash echo "start..." sdate=$(date "+ %Y-%m-%d %H:%M:%S") msg=`redis-cli -p $1 -a $2 bgsave` echo "start bgsave time:$sdate" result=`redis-cli -p $1 -a $2 info Persistence | grep "rdb_bgsave_in_progress" | awk -F":" '{print $2}'` while [ `echo ${result} | awk -v tem="0" '{print($1>tem)? "1":"0"}'` -eq "1" ] ; do sleep 1 result=`redis-cli -p $1 -a $2 info Persistence | grep "rdb_bgsave_in_progress" | awk -F":" '{print $2}'` done edate=$(date "+ %Y-%m-%d %H:%M:%S") echo "end bgsave time:$edate" echo "renaming rdb file..." date=$(date "+ %Y%m%d") mv "../db03/dump.rdb" "../db03/${date}.rdb" echo "finish backup rdb file" echo "end"
阅读更多
- 使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64
- 使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64
- 使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64
- LINUX shell脚本练习:备份文件(1)
- Shell脚本:使用rsync备份文件/目录
- mysql定期备份数据并压缩上传到ftp服务器的bat文件脚本,恢复建议使用SQLyog enterprise
- 8.15_Linux之bash shell脚本编程入门篇(二)以及文件查找和压缩的使用
- CentOS Linux自动备份文件到远程FTP服务器并删除指定日期前的备份Shell脚本
- 【Linux】使用SHELL脚本实时查看文件大小
- linux下使用shell 自动执行脚本文件
- Linux中使用shell脚本向文件中写数据
- Linux下使用shell脚本自动执行脚本文件
- Shell脚本:使用rsync备份文件/目录
- Linux下使用Shell脚本向FTP服务器上传或下载一个文件
- Linux-Shell脚本编程-学习-6-Shell编程-使用结构化命令-文件比较-case编程
- Linux系统关键文件备份shell脚本
- linux使用脚本shell批量替换文件中的文本
- Linux下使用Shell脚本删除一个目录下的所有子目录和文件
- Shell脚本:使用rsync备份文件/目录
- 《使用shell位置变量进行目录文件的备份小脚本》