mysql全备脚本升级版,支持多台主机,多个数据库

此脚是对上午写的脚本的升级,(前一版地址http://www.sql8.net/a/course/shujuku/Mysql/2014/0815/30340.html)

针对同事多个数据库且数据帐号,密码,主机均可能不相同的情况改写

改写后,需要两个脚本协同完成。

一为批量执行脚本 batch.sh

二为数据备份脚本databak.sh

*******************************批量执行脚本 batch.sh**************************************

sh databak.sh  192.168.1.1 database1 bak1 12322  
sh databak.sh  localhost database2,database3,database4 bak 123333

*********************************************************************************************

*******************************数据备份脚本databak.sh**************************************

#!/bin/bash
#mysql全备脚本,此脚本可以备份多个数据库,
#为每个数据建立单独的文件夹进行备份
#对于不同帐号,不同库,不是主机
#调用参数格式 主机 数据库 帐号 密码
#调用方法
#同一帐号多个数据库可以用,分隔
#sh databak.sh  主机 数据库 帐号 密码  
#sh databak.sh  localhost youoil bak 123

#author:yxy
#website:www.sql8.net
#mail:[email protected]
#created:2014-8-14

#Mysql dabase information
#主机
db_host=$1
#databases
#需要备份的数据库,如果有多个数据库,请用,分隔
databaseList=$2
#数据库帐号
db_user=$3
#数据库密码
db_passwd=$4
#mysql安装目录
MYSQL="/opt/lampp/bin/mysql"
#mysql命令目录
MYSQLDUMP="/opt/lampp/bin/mysqldump"

if [ "$db_host" == "" ] || [ "$databaseList" == "" ] || [ "$db_user" == "" ] || [ "$db_passwd" == "" ]; then
echo "Insufficient arguments"
exit 1
fi
echo "$db_host" "$databaseList" "$db_user"  "$db_passwd"

#Path information
#存放备份文件的路径
BACKUP_DB="/opt/backup/database"
LogFile=$BACKUP_DB"/bak.log"

#Time information
#时间
time=`date +"%Y-%m-%d-%H-%M-%S"`
day=`date +"%d"`
month=`date +"%Y-%m"`
weekday=`date +"%u"`

#Path enable write
if [ ! -w "$BACKUP_DB" ]; then
chmod -R 700 $BACKUP_DB
fi

#echo "**********************************host info****************************************"
#echo "db_host:"$db_host
#echo "db_user:"$db_user
#echo "db_passwd:"$db_passwd
#echo "MYSQL:"$MYSQL
#echo "MYSQLDUMP:"$MYSQLDUMP
#echo "databaseName:"$databaseName
#echo "BACKUP_DB:"$BACKUP_DB
#echo "**********************************************************************************"

#Mysql Backup
Date=`date +%Y%m%d`
Begin=`date +"%Y-%m-%d %H:%M:%S"`
#echo "start backup database:"$databaseName"   "$Begin

for databaseName in `echo "$databaseList" | sed ‘s/,/\n/g‘`
do  
    echo $databaseName

#fileName
#生成备份文件名
fileName=$databaseName"-"$time".sql"
#生成备份文件完整路径
BACKUP_DBPATH=$BACKUP_DB"/"$databaseName

#echo "***********************************database Info***********************************************"
#echo "BACKUP_DBPATH:"$BACKUP_DBPATH
#echo "fileName:"$fileName
#echo "**********************************************************************************"

if [ ! -d "$BACKUP_DBPATH" ]; then
mkdir "$BACKUP_DBPATH" 
fi
#备份mysql
$MYSQLDUMP -u $db_user -p$db_passwd -h $db_host $databaseName > $BACKUP_DBPATH/$fileName
#打包.sql文件
cd $BACKUP_DBPATH && tar -czf $fileName.tar.gz $fileName && rm -rf $fileName && chmod go-rwx $fileName.tar.gz

Last=`date +"%Y-%m-%d %H:%M:%S"`
#echo "end backup database:"$databaseName"   "$Last
#输出日志
echo start:$Begin end:$Last $fileName succ >> $LogFile

done

********************crontab设置**********************************************

根据需要设置相关备份规则,此处略则部分规则

#每天1点备份

* 1 * * * cd /opt/backup/database && ./1.sh

#每周一1点备份

* 1 * * 1 cd /opt/backup/database && ./1.sh

#每2小时备份

* */2 * * * cd /opt/backup/database && ./1.sh

#每2天备份

* * */2 * * cd /opt/backup/database && ./1.sh

#每个月5号1点20分备份

20 1 5 * * cd /opt/backup/database && ./1.sh

更多contrab规则请看

http://www.sql8.net/a/course/caozuoxitong/liunx/2014/0815/30328.html

mysql全备脚本升级版,支持多台主机,多个数据库

时间: 2024-10-07 19:24:58

mysql全备脚本升级版,支持多台主机,多个数据库的相关文章

mysql全备脚本,此脚本可以备份多个数据库,单独文件夹

#!/bin/bash#mysql全备脚本,此脚本可以备份多个数据库,#为每个数据建立单独的文件夹进行备份 #author:yxy#website:www.sql8.net#mail:[email protected]#created:2014-8-14 #Mysql dabase information#主机db_host="localhost"#数据库帐号db_user="root"#数据库密码db_passwd="12356789"#mys

Vmware VCenter许可证问题 添加主机 提示仅支持3台主机

背景:我使用vCenter Server版本是vCenter 5.5,  许可证:破解版的 .  使用的序列号是 vCenter Server5 Foundation 无限个实例.  在向vCenter Server添加第4台主机时提示如下:此版本vCenter 在清单中仅支持3台主机. 查看相关事件提示:无法连接ESX中的10.6.1.21:没有足够的CPU许可证 解决方法: 换成vCenter Server5 Standard版本的许可即可. 备注: 要先删除原来的许可,再添加新的许可. 方

linux web目录文件全备脚本

#!/bin/bash#文件全备脚本#删除7天以前的文件#调用方法#yxy #www.sql8.net#[email protected]#2014-08-20#请主意所有路径都为全整目录#sh filebak.sh  要备份的目标目录 备份文件存放路径 保留文件的天数  #sh filebak.sh  /home/wd/wd/wd /home/wd/wd/bakup 7#sh filebak.sh  /home/dd/dd/dd /home/dd/dd/bakup 7 #pathpath=$1

shell监控多台主机

用shell写了个脚本同时监控多台主机(监控主机是否在线,cpu,内存,硬盘,io使用状态,并有邮件通知功能),大神看后觉得有不当之处或有更好的实现方式,请不屑笔墨指出. 首先要在被监控主机和监控主机之间建立信任关系,不了解ssh证书验证的可以看看: http://dragon123.blog.51cto.com/9152073/1586795 安装mutt: [[email protected] ~]# yum install mutt 监控列表: [[email protected] ~]#

单台主机一键编译部署LAMP+wordpress+discuz系统的shell脚本

单台主机一键编译部署LAMP+wordpress+discuz系统的shell脚本 ? 说明: 1.shell脚本与应用程序包在同一个目录中: 2.虚拟机尽量加大CPU核数,以提高编译速度: 3.根据需要修改相应的变量,主要是安装目录.用户名.密码: 4.Mariadb的grant授权部分,需要先手动修改授权范围(@后面的内容)和密码: 5.httpd与php采用sock通讯. ? 完整的shell脚本 #!/bin/bash #*********************************

脚本应用之十四: ping监控多台主机丢包

测试系统版本: CentOS 6.4 作用: ping后台监控多台主机,根据丢包个数采取相应动作 使用: 将欲监控的主机作为参数,可前台运行或放到后台,CTRL+C结束, 后台运行的话 需要 kill -2 $(cat .mypid)结束  ( .mypid 记录的是脚本主进程的PID ) 演示: 后台运行 使用 pstree -ap 查看相关进程 监控执行后的日志 代码专区: #!/bin/bash MAIL='[email protected]' #定义丢包个数 failed_package

Innobackupex MySQL 全备、增备及恢复

简介: 在这之前都是通过 mysqldump 来备份数据库的,由于是逻辑备份,所以采用这种备份方式数据是很安全的,跨平台.版本都很容易. 凡事有利必有弊,逻辑备份在你数据库比较大时,备份.恢复数据所耗费的时间也是蛮长的,所以要不断改进,使用物理备份. 由于线上数据库表使用的是混合引擎 MyISAM 跟 Innodb ,所以也不能使用 mysqlhotcopy ,这个工具还是蛮好用的,可惜只能备份 MyISAM. Percona XtraBackup 是 Percona 公司开发的一个用于 MyS

支持万台服务器分布式监控系统原始手稿

作者:付炜超 如果你本来打算做一个特别牛的东西,最终不管什么原因没做到,但是你实现的也够cool了! 需求分析: 随着现在的企业不断的发展壮大,大多数的企业都出现了分公司.办事处这类的分支机构,由于总公司还要求对下面子公司的网络设备.主机等资源的状态有着相关的了解,所以就要求IT运维部门对不在同一地域的网络.主机等资源都要进行监控. 功能分析: 1.一个监控系统往往需要集成资产管理,可以从逻辑上展示业务和功能的信息,通过对其进行数据分析,做到对投资与回报的一个反馈展示,为资产的合理规划与使用提供

配置使用4台主机实现12台主机的集群

一.说明 因为电脑只能开四个虚拟机,于是使用4台虚拟机模拟12台主机. 如下图所示: 图解: 1.四台虚拟机均使用 CentOS 6.5 系统: 2.前端使用 keepalived给haproxy作高可用,keepalived为双主模型,前端两主机互为主从,两虚拟IP为:172.16.36.100.172.16.36.200: 3.前端haproxy给后端的web服务器作负载均衡: 4.前端DNS用于keepalived两虚拟IP作轮询解析域名,域名为:www.wubin.com: 5.事实上,