为了安全起见,我们每天都需要备份数据库,但是备份数据库的时间往往是在凌晨左右,大家都休息,没人使用的时候,这样我们就需要linux系统实现自动备份,即定时自动执行脚本。但是我们又不能让所有的备份一直保留,所以我们还需要删除去古老的备份。(我的操作系统版本是Linux ip-172-16-3-158 3.10.0-327.13.1.el7.x86_64,centos7)

首先,我们说linux系统的定时自动备份。据说有多种方法,我在这里使用的方法是,直接添加配置文件。我们在 /etc/crontab文件下,添加命令即可,

上面的解释很清楚,第一个参数是分钟(0 - 59),第二个参数是 小时 (0 - 23 ),第三个参数是每个月的哪一天 (0 - 31 ),第四个参数是一年中的哪一个月 (1 - 12),第五个参数是每周的周几( 0 -6) 0代表星期天(西方人认为星期天是一周的开始)。后面就是执行命令的角色,和被执行的命令。

下面我们开始编辑数据库备份脚本,(这里我们备份的数据库是postgresql的数据库)

数据库的备份命令很简单,就是

pg_dump -h IPADRESS -U user database > database.sql

这样会出现密码提示,妨碍我们执行自动化脚本,所以我在这里使用了下面的方法,在用户目录下,编辑.pgpass文件,他的格式如下

hostname:port:database:username:password

编辑好之后保存,修改权限为600
这样我们执行语句 pg_dump -h IPADRESS -U user database -w > database.sql,就不会有密码提示了 因为要每天都要备份,所以备份文件的命名是很重要的,我们按照习惯用时间作为命名
DATE=`date "+%Y-%m-%d-%H-%M-%S"` 同样,因为备份只需要保留几天的就可以了,所以我们需要将时间比较久的备份删除掉,这里我们采用的方法是
find /backup_db/ -mtime +4 -name "*tar.gz" -exec rm -rf {} \;
意思是将4天前的/backup_db/目录下,以。.tar.gz结尾的文件,全部删除掉。这里解释下 -mtime +4 ,这个参数,
+4表示的完整的时间4天,如果我们参数值写的是 +0 ,那么从昨天这个时候到现在这个时候都是在0以内,比如现在是下午四点钟,那么昨天下午16:00:01时的文件就不在它的查询
范围内,而昨天下午 15:59:59的文件就在它的查询范围内。所以
find /backup_db/ -mtime +0 -name "*tar.gz" -exec rm -rf {} \;表示昨天下午16:00:00之前以.tar.gz结尾的文件,我们会执行删除操作,保留一天以内的。同理,
find /backup_db/ -mtime +4 -name "*tar.gz" -exec rm -rf {} \;表示我们会保留五天以内的以.tar.gz结尾的文件,而将之前的文件全部删除。当然,不以.tar.gz结尾的文件是不在删除范围内的。
好了,这个就是我做的全部过程。

shell脚本实现数据库自动备份和删除备份的更多相关文章

  1. Centos上通过shell脚本实现数据库备份和还原

    最近有个这样的需求,通过shell脚本实现数据库备份还原,最后通过网上查询自己测试实现,将脚本分享给大家 1.数据库备份脚本 #!/bin/bash ds=`` list=`date +%Y`/`da ...

  2. liunx文件定期本地备份、异地备份、删除备份脚本

    导航 一.背景二.依赖功能介绍三.本地备份脚本四.异地备份脚本五.定期删除备份六.github脚本地址 - - - - - - - - - - 分割线 - - - - - - - - - - 一.背景 ...

  3. Saiku数据库迁移后的刷新脚本-Shell脚本读取数据库中的数据(二十三)

    Saiku数据库迁移后的刷新脚本 之前有谈过对saiku中的数据进行刷新,因为saiku默认会从缓存中查询数据,但是配置不使用缓存又会效率低下... 所以这里就需要做一个数据刷新,每次ETL之后都需要 ...

  4. 使用shell脚本生成数据库markdown文档

    学习shell脚本编程的一次实践,通过shell脚本生成数据库的markdown文档,代码如下: HOST=xxxxxx PORT=xxxx USER="xxxxx" PASSWO ...

  5. linux shell简单实现数据库自动备份

    以centos系统为例,实现数据库自动备份.1.写一个shell: 12 #! /bin/bashmysqldump -cp --user=root --password='123' dbName | ...

  6. Dockerfile 构建后端springboot应用并用shell脚本实现jenkins自动构建

    Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zh*****eng "z*******ch.cn" ENV LANG en_US.U ...

  7. Dockerfile 构建后端tomcat应用并用shell脚本实现jenkins自动构建

    Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zhaoweifeng "zh******tech.cn" ENV LANG en_U ...

  8. Dockerfile 构建前端nginx应用并用shell脚本实现jenkins自动构建

    Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zh********h.cn RUN rm -f /etc/nginx/nginx.conf COPY n ...

  9. Shell 脚本操作数据库实战

    安装mariadb 数据库  (默认没有密码,直接mysql即可进入数据库管理控制台) yum install mariadb mariadb-server mariadb-libs -y syste ...

随机推荐

  1. php接口和抽象类

    接口关键字:interface,不加class关键字接口里面有成员方法,但是没有函数体.实现接口使用的关键字:implements 不是extends子类必须实现接口的所有方法 使用接口,你可以指定某 ...

  2. [转] Makefile经典教程(掌握这些足够)

    目录(?)[-] Makefile 介绍 1 Makefile的规则 2 一个示例 3 make是如何工作的 4 makefile中使用变量 5 让make自动推导 6 另类风格的makefile 7 ...

  3. socket测试远程地址能否连接并为连接设置超时

    public class TestConnect { string hostIp = ""; ; public string recMsg = ""; Sock ...

  4. jQuery - 疑惑

    设置内容和属性:http://www.runoob.com/jquery/jquery-dom-set.html

  5. 黑马程序员_JAVA基础知识总结3

    ------- android培训.java培训.期待与您交流! ---------- Java源文件的扩展名是.java,编译之后生成.class的文件.所有的类都有一个共同的继承祖先Object类 ...

  6. 54. Search a 2D Matrix && Climbing Stairs (Easy)

    Search a 2D Matrix Write an efficient algorithm that searches for a value in an m x n matrix. This m ...

  7. mysql存储emoji表情

    微信获取的用户昵称nickname中带有emoji表情,转换成字符码后是这种形式“\xF0\x9F\x91\x8D\xE6\x94...”, 直接保存可能出现以下错误 Caused by: java. ...

  8. postman+newman(2)

    用newman执行带环境变量的postman测试用例 1.在postman中将用例项目文件导出外还需将环境变量文件导出,如下: 2.newman执行如下: newman -c 测试用例文件 -e 环境 ...

  9. host DNS 访问规则

    昨天站点一直出现302循环重定向问题,捣鼓了半天才解决,原来是hosts和dns配置问题. 注:当你的站点出现循环重定向时,首先应该关注的hosts以及dns配置,确保无误. 下面记录下相关知识点: ...

  10. js复制input 框中的值

    function copy(){ var Url2=document.getElementById("copyValue"); Url2.select(); document.ex ...