自动实现备份整个数据库

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

核心代码

 #!/bin/bash
#set -x
#########################
# 功能:自动备份整个mysql数据库
# 作者:时光博客
# 发布时间://
# 最后修改时间:
# 版本:v1.
########################
############################参数定义########################
#用户名
user="root"
#密码
pass="root"
# 设置备份目录,必须以/结尾
back_dir=/data/backup/
#设置保存多少天
day=
#定义文件名
file_name=`date +%Y%m%d%H%M`
#定义排除的数据库名称
exclude=("Database" "performance_schema" "information_schema" "mysql")
#############################代码逻辑########################
#定义命令
MYSQL=`which mysql`
MYSQLDUMP=`which mysqldump`
#创建一个临时文件,装载数据库
tmp_file=/tmp/databases_$RANDOM
touch $tmp_file
#登陆mysql,获取所有的数据库名称
$MYSQL -u$user -p$pass <<EOF >$tmp_file
show databases;
EOF
#定义数据库名称数组
database_list=()
#定义自增变量
len=
#获取真实有用的数据库名称
while read line
do
if [[ "${exclude[@]}" != *$line* ]]
then
let "len++"
database_list[$len]=$line
fi
done < $tmp_file
#输出结果,导出数据库
echo "数据库总共:${#database_list[*]}"
#开始备份
echo "开始备份..."
rd=$RANDOM
for name in ${database_list[@]}
do
file_path="${back_dir}`date +%Y%m%d`"/
if [ ! -e $file_path ]
then
mkdir -p $file_path
fi
file="${file_path}${name}-$file_name-$rd.gz"
$MYSQLDUMP --opt $name -u $user -p${pass} | gzip > $file
done
#保留多少天的数据
find $basedir -mtime +$day -name "*.gz" -exec rm -rf {} \;
#删除临时文件
if [ -e $tmp_file ]
then
rm -rf $tmp_file
fi
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. Python协程详解(二)

    上一章,我们介绍了Python的协程,并讲到用yield达到协程的效果,这一章,我们来介绍yield from的结构和作用 我们先来对比下yield和yield from的用法 def first_g ...

  2. loj2061 「HAOI2016」放棋子

    答案就是错排数 n = int(input()) f = [0] * 205 f[0] = 1 for i in range(2, n+1): f[i] = (i-1) * (f[i-1] + f[i ...

  3. day05_06 continue语句、while循环

    输入满3次跳出,然后留一句话 for i in range(3): username = input("Username:") password = input("Pas ...

  4. python学习-- 在django中,执行原始sql语句

    from django.shortcuts import render, redirect from news.models import Article, Column def test(reque ...

  5. python正则 转

    python中的正则表达式(re模块)   一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编 ...

  6. 详解 MySQL 的计划任务

    注意:5.1以后才支持! 让MYSQL定期执行指定的一条命令.功能类似于crontab. 1. 检查你的MYSQL是否开了这个功能 SHOW VARIABLES LIKE 'event_schedul ...

  7. iptables端口转发命令

    需求很简单,把本地81端口映射到8080端口上 1. 所有的81请求转发到了8080上.   1 # iptables -t nat -A PREROUTING -p tcp --dport 81 - ...

  8. 历史Linux镜像的问题修复方案

    历史Linux镜像创建的ECS云服务器,可能存在NTP没有配置,YUM没有配置,还可能存在最近暴漏较高的安全漏洞,请按照以下步骤进行修复,可以让您的云服务器更加安全,还可以使用阿里云提供的YUM服务进 ...

  9. line-height与vertical-align

    css世界读书笔记: 内联元素与流 块级元素负责结构,内联元素接管内容 x元素的下边缘就是我们的基线baseline x-height就是x的高度 vertical-align:middle是x中点位 ...

  10. 【bzoj1475】方格取数 网络流最小割

    题目描述 在一个n*n的方格里,每个格子里都有一个正整数.从中取出若干数,使得任意两个取出的数所在格子没有公共边,且取出的数的总和尽量大. 输入 第一行一个数n:(n<=30) 接下来n行每行n ...