为了安全起见,我们每天都需要备份数据库,但是备份数据库的时间往往是在凌晨左右,大家都休息,没人使用的时候,这样我们就需要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. UML的类图、时序图表示方法以及惯例

    <UML类图图示样例>说明:http://wenku.baidu.com/link?url=DEaRFyVIAH4kZ7TolplfFhFhmAk3gFaNSOH7XPzfTnCWY4CB ...

  2. SSH框架流程

    流程图 具体步骤 一.实体类 //Serializable在网络的环境下做类传输public class Category implements Serializable { private Inte ...

  3. 用于列出选项的Windows窗体控件

    可以提供选项列表的控件有ListBox.ComboBox.CheckedListBox,如何正确的使用和选择这些控件,下面对此进行讨论.首先对这三种控件的功能分别进行说明: ListBox ListB ...

  4. sql 分组查询及格不及格人数

    select score as 类别,count(*) as 人数 from (select case when fen>=60 then '及格' else '不及格' end as scor ...

  5. MBW内存测试

    在测试前,理应了解本机所具备的特点,比如CPU频率.内存频率.内存大小,等等信息. 查看CPU用如下命令(多少个核,频率,特性等): cat /proc/cpuinfo 查看内存用如下命令:(只有当前 ...

  6. Backbone笔记(续)

    Backbone Bockbone 总览 Backbone 与 MVC 模式:解决某一类问题的通用方案 - 套路 MVC:一种架构模式,解耦代码,分离关注点 M(Model) - 数据模型 V(Vie ...

  7. SQL笔记 [长期更新] (-2015.4)

    [遍历所有表,复制表结构,复制表数据] --插入语句SELECT * INTO A FROM B 是在还没有A表的情况下,直接通过B表创建并把B表数据复制到A表里面,之后A,B表的结构和数据完全一样. ...

  8. Orcle基本语句(一)

    --创建学生信息表,约束放在所有列定义之后 CREATE TABLE stu_info( stu_id INTEGER, stu_name NVARCHAR2() NOT NULL, stu_sex ...

  9. Python自动化 【第八篇】:Python基础-Socket编程进阶

    本节内容: Socket语法及相关 SocketServer实现多并发 1. Socket语法及相关 sk = socket.socket(socket.AF_INET,socket.SOCK_STR ...

  10. xcode5-ios7-如何添加120x120、152x152、76x76图标

    以120x120为例: 添加Icon_120x120.png-->.plist添加Icon files-->App Icons自动变化 1. 2. 3. ================= ...