shell实现自动备份整个数据库,一个库备份一个文件

自动实现备份整个数据库

  • 实现一个库备份一个文件
  • 实现排除不需要备份的库
  • 实现备份成压缩文件
  • 实现定义保留多少天的备份文件

核心代码

 1 #!/bin/bash
 2 #set -x
 3 #########################
 4 # 功能:自动备份整个mysql数据库
 5 # 作者:时光博客
 6 # 发布时间:2018/06/04
 7 # 最后修改时间:
 8 # 版本:v1.0
 9 ########################
10 ############################参数定义########################
11 #用户名
12 user="root"
13 #密码
14 pass="root"
15 # 设置备份目录,必须以/结尾
16 back_dir=/data/backup/
17 #设置保存多少天
18 day=15
19 #定义文件名
20 file_name=`date +%Y%m%d%H%M`
21 #定义排除的数据库名称
22 exclude=("Database" "performance_schema" "information_schema" "mysql")
23 #############################代码逻辑########################
24 #定义命令
25 MYSQL=`which mysql`
26 MYSQLDUMP=`which mysqldump`
27 #创建一个临时文件,装载数据库
28 tmp_file=/tmp/databases_$RANDOM
29 touch $tmp_file
30 #登陆mysql,获取所有的数据库名称
31 $MYSQL -u$user -p$pass <<EOF >$tmp_file
32 show databases;
33 EOF
34 #定义数据库名称数组
35 database_list=()
36 #定义自增变量
37 len=0
38 #获取真实有用的数据库名称
39 while read line
40 do
41         if [[ "${exclude[@]}" != *$line* ]]
42         then
43                 let "len++"
44                 database_list[$len]=$line
45         fi
46 done < $tmp_file
47 #输出结果,导出数据库
48 echo "数据库总共:${#database_list[*]}"
49 #开始备份
50 echo "开始备份..."
51 rd=$RANDOM
52 for name in ${database_list[@]}
53 do
54         file_path="${back_dir}`date +%Y%m%d`"/
55         if [ ! -e $file_path ]
56         then
57                 mkdir -p $file_path
58         fi
59         file="${file_path}${name}-$file_name-$rd.gz"
60         $MYSQLDUMP --opt $name -u $user -p${pass} | gzip > $file
61 done
62 #保留多少天的数据
63 find $basedir -mtime +$day -name "*.gz" -exec rm -rf {} \;
64 #删除临时文件
65 if [ -e $tmp_file ]
66 then
67         rm -rf $tmp_file
68 fi
69 echo "备份结束."

转自 时光博客

原文地址:https://www.cnblogs.com/300js/p/9133352.html

时间: 2024-11-09 13:15:29

shell实现自动备份整个数据库,一个库备份一个文件的相关文章

学会4种备份MySQL数据库(基本备份方面没问题了)

前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么比数据跟更为重要. 那么我们该如何保证数据不丢失.或者丢失后可以快速恢复呢?只要看完这篇, 大家应该就能对MySQL中实现数据备份和恢复能有一定的了解. 为什么需要备份数据? 其实在前言中也大概说明了为什么要备份数据, 但是我们还是应该具体了解一下为什么要备份数据 在生产环境中我们数据库可能会遭遇各

数据库指定库表中的字段进行备份,并以表格的形式定时发送邮件到指定邮箱 ?

备份数据进行定时邮件发送 mkdir -p /opt/module/shell/ mkdir -p /opt/module/shell/sql/revenue.sql mkdir -p /opt/module/shell/csv/revenue #MailTool.jar 放在指定目录下 便于发送邮件使用 可自动生成表格 vim /opt/module/shell/daily_text.sh # !/bin/bash #数据库指定库.表中的字段进行备份,并以表格的形式发送邮件到指定邮箱 #定义变

使用xtrabackup备份MySQL数据库

前言 Xtrabackup提供了两种命令行工具: xtrabackup:专用于备份InnoDB和XtraDB引擎的数据: innobackupex:是一个perl脚本,在执行过程中会调用xtrabackup命令,这个命令即可以实现备份InnoDB,也可以备份Myisam引擎的对象. xtrabackup是由percona提供的MySQL数据库备份工具,其备份速度快并且可靠:备份过程不会打断正在执行的事务:能够基于压缩等功能节约磁盘空间和流量:自动实现备份检验:还原速度快. 若需要安装xtraba

sql2005-数据库备份方案 (转载)

sql2005数据库备份一般情况分为二种:一是手工备份.二是自动备份.以下是二种方法的步骤: 一.手工备份 打开数据库,选择要备份数据库,右键选择[任务]->[备份],打开备份数据库页面,在[源]选择要备份的数据库和备份类型.在备份组件选择数据库.在[备份集]填写备份名称,说明和过期时间.这个可根据自已的需要去填写.在[目标]中选择磁盘或磁带.一般情况下都是备份到磁盘.所以不用理会.然后点右边添加按钮,选择文件保存的路径和文件名.最后点确定完成数据库存的备份. 二.自动备份1.启动Sql Ser

mysql备份与恢复多库备份

实例:备份:mysqldump -u root -p'123456' kaliboy>/opt/kaliboy.sql 指定字符集备份:mysqldump -u root -p'123456' --default-character-set=utf8 kaliboy>/opt/kaliboy.sql 备份参数:-e : 后面可以执行mysql 命令用;分开-B :参数的作用是增加创建数据库和连接数据库的命令-d : 备份表结构-t : 备份数据-A -B --events 备份全部数据库-F

linux设置定时备份mysql数据库

最近写自己的项目,买了阿里云服务器,可以在云上根据自己想到的需求随意使用技术,感觉很爽.备份mysql流程如下: 环境:CentOS Linux release 7.2.1511 (Core) mysql5.6.34 创建存放备份文件的文件夹mkmir /backup/mysql 创建备份脚本vi backup.shmysqldump -u root -p888 familytree | gzip > /backup/mysql/familytree_$(date +%Y%m%d_%H%M%S)

Shell脚本-----自动备份Mysql数据库

脚本的整体思路 1.定义需要的变量 2.利用for循环备份需要备份的库,并以库名-当天日期.sql命名,并记录相关日志 3.建立备份当天的日期的目录,向备份的Sql文件移动到该目录 4.压缩打包该目录,以节省空间,打包成功后删除该目录 5.备份目录只备份七天的数据库,第八天删除第一天的备份,目录只会存在连续七天的备份文件 6.查找备份目录下的.log日志文件,超过七天的删除 #!/bin/bash mysql_bin=/usr/local/tdoa/mysql/bin/mysqldump use

[转]一个备份MySQL数据库的简单Shell脚本

本文翻译自 iSystemAdmin 的 <A Simple Shell Script to Backup MySQL Database> Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行.我们也可以逐一敲入命令手动执行.如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反复运行这些命令了. 我首先要在本文带给你的是完整脚本.后面会对该脚本做说明.我假定你已经知道shell scripting. mysqldump和cronta

web服务文件更新自动同步、数据库主从复制、shell脚本实现网站代码备份和mysql备份

基搭建LAMP环境,并实践基于DNS做基于域名的虚拟主机中的环境,重新搭建一个同样的环境 要求: a)实现web服务文件更新的自动同步到另一台机器上 b)数据库实现主从复制 c)通过shell脚本实现网站源代码备份和mysql备份,备份策略包括全量备份.增量备份.差异备份 a,实现web服务文件更新的自动同步到另一台机器上: 1,在httpd服务器上建立基于FQDN的两个虚拟web站点,并创建相关目录. 2,修改测试windows主机的hosts文件,并编辑两个虚拟web站点对应的目录下的ind