51cto shell mysql备份数据库_mysql自动备份可通用shell脚本

最近在整理服务器的脚本,发现以前写的mysql每天自动备份脚本写的不太好,就重新写了一个:#!/bin/bash

####目录环境的配置####

export datetime=`date +"%Y%m%d"`

export mysqlbin_dir="/usr/local/mysql/bin"

export datadir="`$mysqlbin_dir/mysql -h localhost -uroot -A -Bse "show variables like 'datadir';" |awk '{print $2}'`"

export mysql_backup="/data/backup/mysql_backup"

export masterbakdir="$mysql_backup/masterbakdir"

export database="database"

if [ ! -e "$masterbakdir/"$datetime"" ];then

mkdir -p $masterbakdir/"$datetime"

fi

if [ ! -e "$mysql_backup/logs" ];then

mkdir -p "$mysql_backup/logs"

fi

####记录主库库状态####

$mysqlbin_dir/mysql -h localhost -A -e "select now();show master status\G;" |tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log

echo "============================ start mysqldump `date`" | tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log

####mysqldump####

$mysqlbin_dir/mysqldump --allow-keywords --opt $database > $masterbakdir/$database-$datetime.sql

if [ $? -eq 0  ]

then

echo "`date` database backup success" |tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log

else

echo "`date` database backup fail" |tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log

fi

echo "============================ end mysqldump `date`"|tee -a $masterbakdir/"$datetime"/masterstat_${datetime}.log

####删除30天前的备份,并且做日志#####

find $masterbakdir -type f -ctime +30 -name "$database*" -exec rm -vf {} \; >> $mysql_backup/logs/free-${datetime}.log

find $mysql_backup/logs -type f -ctime +30 -name "free-*" -exec rm -vf {} \;

然后再crontab中添加定时,一般都是在没什么人使用时没有数据写入时,因为备份是要确保数据同步要加只读锁,比如每天凌晨4点:00 04 * * * /usr/local/scripts/master_dbbak.sh

在这里要注意的是如果是需要备份整个库,势必就有备份到mysql库,那么mysqldump就要添加--events --ignore-table=mysql.event参数,用来忽略mysql.event这张表,不然mysqldump后就会有警告:Warning: Skipping the data of table mysql.event. Specify the --events option explicitly

如果数据多时会增加不必要的系统开销,mysql.event表记录的是当前库中创建的事件,在mysql没有启用时,一般是空的。

这个是一个基础脚本,以后还可以在这个基础上在添加上备份失败发邮件等等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值