shell实现自动备份整个数据库,一个库备份一个文件
自动实现备份整个数据库
- 实现一个库备份一个文件
- 实现排除不需要备份的库
- 实现备份成压缩文件
- 实现定义保留多少天的备份文件
核心代码
#!/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实现自动备份整个数据库,一个库备份一个文件的更多相关文章
- shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机
shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机 备份mysql中的库或者表 mysqldump 常用参数详解: -u 用户名 -p 密码 -h ...
- SQLSERVER 数据库备份脚本-支持多库备份
原文:SQLSERVER 数据库备份脚本-支持多库备份 <pre name="code" class="sql">--变量定义 DECLARE @b ...
- 学会4种备份MySQL数据库(基本备份方面没问题了)
前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么 ...
- 实现定时备份mysql数据库并把备份数据库邮件发送
一.先来看备份mysql数据库的命令 1 mysqldump -u root --password=root --database abcDataBase > c:/abc_backup.sql ...
- linux下实现shell脚本自动连接mongodb数据库并创建索引
在linux下创建shell脚本
- shell实现自动部署两台tomcat项目+备份
就做个记录吧, 其实也没啥好说的. 主机 #!/bin/bash TODAY=$(date -d 'today' +%Y-%m-%d-%S) MIP="192.168.180.24" ...
- Linux 网站文件和数据库全量备份 一键脚本(支持FTP,Google Drive)
原文连接: https://teddysun.com/469.html 此文为转载,建议查看秋水大神的原文,排版更容易查看,另外,建议查看脚本源码,方便了解脚本运行过程, 脚本已测试,大神的脚本一如既 ...
- mysql备份恢复数据库据/表
备份单个数据库,只备份表,如要恢复,必须先创建一个数据库[root@s]# mysqldump -u root -p dbname1 > dbname1.sql[root@s]# mysql - ...
- sql2005-数据库备份方案 (转载)
sql2005数据库备份一般情况分为二种:一是手工备份.二是自动备份.以下是二种方法的步骤: 一.手工备份 打开数据库,选择要备份数据库,右键选择[任务]->[备份],打开备份数据库页面,在[源 ...
随机推荐
- leetcode 【 Merge k Sorted Lists 】python 实现
题目: Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexit ...
- 图说不为人知的IT传奇故事-2-IBM咬不动的胡桃
此系列文章为“图说不为人知的IT传奇故事”,各位大忙人可以在一分钟甚至几秒内了解把握整个内容,真可谓“大忙人的福利”呀!!希望各位IT界的朋友在钻研技术的同时,也能在文学.历史上有所把握.了解这些故事 ...
- [netty4][netty-transpot]Channel体系分析
Channel体系分析 接口与类结构体系 -- [I]AttributeMap, ChannelOutboundInvoker, Comparable -- [I]AttributeMap ---- ...
- linux下jenkins学习之简单安装
前提:安装包从官网获取https://pkg.jenkins.io/redhat-stable/jenkins-2.7.4-1.1.noarch.rpm 1.在线下载 Sudo -O wget htt ...
- poj1111(单身快乐)
...
- C# 方法重载 overload、方法重写 override、隐藏 new
一.重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同.这样才能通过传递不同的参数来决定到底调用哪一个. 值得注意的是,方法重载只有通过参数不同来判断调用哪个方法, ...
- c++矩阵
这里讲的矩阵有创建矩阵,矩阵加法,矩阵乘法,输出矩阵这些功能. #include<iostream> using namespace std; template<class T> ...
- 系统中同时安装sql2005 和 sql2008 R2 提示要删除SQL Server 2005 Express
修改注册表:HKLM\Software\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM,把 ShellSEM重命名即可 如果是64位机器 在 HKL ...
- Unable to execute dex: Multiple dex files define 问题
今天在run公司的android project时候,报这个错误. 1. Clean Project, 重启Eclipse 没有解决. 2. 看到别人遇到的相同错误,解决方法如下: http://bl ...
- 【转】C# client 与java netty 服务端的简单通信,客户端采用Unity
http://blog.csdn.net/wilsonke/article/details/24721057 近日根据官方提供的通信例子自己写了一个关于Unity(C#)和后台通信的类,拿出来和大家分 ...