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数据库备份一般情况分为二种:一是手工备份.二是自动备份.以下是二种方法的步骤: 一.手工备份 打开数据库,选择要备份数据库,右键选择[任务]->[备份],打开备份数据库页面,在[源 ...
随机推荐
- MySQL基础4-SQL简单查询(单表)
1.SELECT语句 2.运算符的优先级 利用Navicat中的查询方法: 栗子1:查询所有货品信息 栗子2:查询所有货品的id,productName,salePrice 当查询错误的时候出现的界面 ...
- day23 Model 操作,Form 验证以及序列化操作
Model 操作 1创建数据库表 定制表名: 普通索引: 创建两个普通索引,这样就会生成两个索引文件 联合索引: 为了只生成一个索引文件,才 ...
- loj2049 「HNOI2016」网络
好像复杂度来说不是正解--不加谜之优化(下叙)能被loj上的加强数据卡 #include <algorithm> #include <iostream> #include &l ...
- 【Luogu P1661】扩散
题目: 一个点每过一个单位时间就会向四个方向扩散一个距离,如图. 两个点$a$.$b$连通,记作$e(a,b)$,当且仅当$a$.$b$的扩散区域有公共部分.连通块的定义是块内的任意两个点$u$.$v ...
- C# 引用访问权限
同样代码表现的不同行为 创建基类(Super)和派生类(Sub)每个类有一个字段field和一个公共方法getField,并且使用内联的方式初始化为1,方法getField返回字段field.C#和J ...
- phpMyAdmin 4.7.x CSRF
phpMyAdmin 4.7.x CSRF 场景:管理员登陆phpmyadmin之后,我试验了一下,发现只要是登陆session没有失效应该是都可以的, 利用,phpmyadmin可以通过get方式操 ...
- python安装pattern失败
做文本分类需要用到pattern.en进行词形还原,安装了一上午都没有成功,mysqlclient安装失败.最后解决办法,pip install --only-binary :all: mysqlcl ...
- Solr 配置连接数据库
前面我们将solr安装并创建了core同时也配置可IK分词器,接下来我们通过配置连接Mysql数据库并把数据导入到solr(使用ik分词器). 1.配置managed-schema文件 Request ...
- HDU 4177 模拟时间问题
Avoiding a disaster Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Servlet+Json代码
package com.brmoney.servlet; import java.io.IOException; import java.io.PrintWriter; import java.uti ...