自动实现备份整个数据库

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

核心代码

  1. #!/bin/bash
  2. #set -x
  3. #########################
  4. # 功能:自动备份整个mysql数据库
  5. # 作者:时光博客
  6. # 发布时间://
  7. # 最后修改时间:
  8. # 版本:v1.
  9. ########################
  10. ############################参数定义########################
  11. #用户名
  12. user="root"
  13. #密码
  14. pass="root"
  15. # 设置备份目录,必须以/结尾
  16. back_dir=/data/backup/
  17. #设置保存多少天
  18. day=
  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=
  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 "备份结束."

转自 时光博客

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

  1. shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机

    shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机 备份mysql中的库或者表 mysqldump 常用参数详解: -u 用户名 -p 密码 -h ...

  2. SQLSERVER 数据库备份脚本-支持多库备份

    原文:SQLSERVER 数据库备份脚本-支持多库备份 <pre name="code" class="sql">--变量定义 DECLARE @b ...

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

    前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么 ...

  4. 实现定时备份mysql数据库并把备份数据库邮件发送

    一.先来看备份mysql数据库的命令 1 mysqldump -u root --password=root --database abcDataBase > c:/abc_backup.sql ...

  5. linux下实现shell脚本自动连接mongodb数据库并创建索引

    在linux下创建shell脚本

  6. shell实现自动部署两台tomcat项目+备份

    就做个记录吧, 其实也没啥好说的. 主机 #!/bin/bash TODAY=$(date -d 'today' +%Y-%m-%d-%S) MIP="192.168.180.24" ...

  7. Linux 网站文件和数据库全量备份 一键脚本(支持FTP,Google Drive)

    原文连接: https://teddysun.com/469.html 此文为转载,建议查看秋水大神的原文,排版更容易查看,另外,建议查看脚本源码,方便了解脚本运行过程, 脚本已测试,大神的脚本一如既 ...

  8. mysql备份恢复数据库据/表

    备份单个数据库,只备份表,如要恢复,必须先创建一个数据库[root@s]# mysqldump -u root -p dbname1 > dbname1.sql[root@s]# mysql - ...

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

    sql2005数据库备份一般情况分为二种:一是手工备份.二是自动备份.以下是二种方法的步骤: 一.手工备份 打开数据库,选择要备份数据库,右键选择[任务]->[备份],打开备份数据库页面,在[源 ...

随机推荐

  1. MySQL基础4-SQL简单查询(单表)

    1.SELECT语句 2.运算符的优先级 利用Navicat中的查询方法: 栗子1:查询所有货品信息 栗子2:查询所有货品的id,productName,salePrice 当查询错误的时候出现的界面 ...

  2. day23 Model 操作,Form 验证以及序列化操作

    Model 操作 1创建数据库表 定制表名:       普通索引:             创建两个普通索引,这样就会生成两个索引文件   联合索引:           为了只生成一个索引文件,才 ...

  3. loj2049 「HNOI2016」网络

    好像复杂度来说不是正解--不加谜之优化(下叙)能被loj上的加强数据卡 #include <algorithm> #include <iostream> #include &l ...

  4. 【Luogu P1661】扩散

    题目: 一个点每过一个单位时间就会向四个方向扩散一个距离,如图. 两个点$a$.$b$连通,记作$e(a,b)$,当且仅当$a$.$b$的扩散区域有公共部分.连通块的定义是块内的任意两个点$u$.$v ...

  5. C# 引用访问权限

    同样代码表现的不同行为 创建基类(Super)和派生类(Sub)每个类有一个字段field和一个公共方法getField,并且使用内联的方式初始化为1,方法getField返回字段field.C#和J ...

  6. phpMyAdmin 4.7.x CSRF

    phpMyAdmin 4.7.x CSRF 场景:管理员登陆phpmyadmin之后,我试验了一下,发现只要是登陆session没有失效应该是都可以的, 利用,phpmyadmin可以通过get方式操 ...

  7. python安装pattern失败

    做文本分类需要用到pattern.en进行词形还原,安装了一上午都没有成功,mysqlclient安装失败.最后解决办法,pip install --only-binary :all: mysqlcl ...

  8. Solr 配置连接数据库

    前面我们将solr安装并创建了core同时也配置可IK分词器,接下来我们通过配置连接Mysql数据库并把数据导入到solr(使用ik分词器). 1.配置managed-schema文件 Request ...

  9. HDU 4177 模拟时间问题

    Avoiding a disaster Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  10. Servlet+Json代码

    package com.brmoney.servlet; import java.io.IOException; import java.io.PrintWriter; import java.uti ...