linux下备份mysql日志_讲解Linux系统下如何自动备份MySQL数据的基本教程

1.先创建一个数据库备份目录: mkdir backup

cd backup

mkdir mysqlbackup

cd mysqlbackup

2.创建备份脚本 vi mysqlautobackup

3.编写脚本: filename=`date +%Y%m%d`

/mysql的bin目录/mysqldump --opt 数据库名 -u(mysql账号) -p(mysql密码) | gzip > /备份到哪个目录/name$filename.gz

说明:以上采用gzip压缩,name可随意写,注意-u与mysql账号之间没有空格也无需括号,-p与mysql密码也是。

4.将脚本设置为可执行权限: chmod +x autobackup

5.写入计划任务: crontab -e

01 01 * * * /bin/bash /脚本所在目录/mysqlautobackup

每天凌晨1点零1分执行脚本。

重启计划任务: /etc/rc.d/init.d/crond restart

至此所有步骤完成。

一些常用技巧

1、创建保存备份文件的路径/mysqldata #mkdir /mysqldata

2、创建/usr/sbin/baktest文件

输入以下内容: mysqldump -uroot -proot test | gzip > /mysqldata/test`date +%Y-%m-%d_%H%M%S`.sql.gz

3、修改文件属性,使其可以执行 #chmod +x /usr/sbin/baktest

4、修改/etc/crontab

在下面添加 01 3 * * * root /usr/sbin/baktest

表示每天3点钟01分执行备份

5、重新启动crond #/etc/rc.d/init.d/crond restart

完成。

PS:

全备份脚本: #!/bin/bash

# Name:qbk全备份脚本

# mysql qbk scripts

# By zxsdw.com

# Last Modify:2015-01-21

#定义脚本存放路径

#scriptsDir=/usr/sbin

#定义用户名及密码

user=root

userPWD=密码

#定义要备份的数据库

database=数据库

#定义完全备份文件存放路径

bakDir=/backup/mysql

#eMailFile=$bakDir/email.txt

#eMail=admin@zxsdw.com

#定义日志文件

LogFile=$bakDir/mysqlbak.log

DATE=`date +%Y%m%d`

echo " " >> $LogFile

echo " " >> $LogFile

echo "--------------------------" >> $LogFile

echo $(date +"%y-%m-%d %H:%M:%S") >>$LogFile

echo "-----------------" >> $LogFile

cd $bakDir

DumpFile=$DATE.sql.gz

mysqldump --flush-logs -u$user -p$userPWD --quick $database| gzip >$DumpFile

echo "Dump Done" >> $LogFile

echo "[$DumpFile]Backup Success!" >> $LogFile

daily_databakDir=$bakDir/daily_backup

cd $bakDir/daily_backup

find $daily_databakDir -name "daily*" -type f -mtime +35 -exec rm {} \; > /dev/null 2>&1

增量备份脚本 #!/bin/bash

# Name:zbk增量备份

# mysql zbk scripts

# By zxsdw.com

# Last modify:2015-01-21

#定义数据库用户名及密码

user=root

userPWD=密码

#定义数据库

database=数据库

#生成一个新的mysql-bin.00000X文件,如果err日志被清除,则自动新建一个。

/usr/local/mysql/bin/mysqladmin -u$user -p$userPWD flush-logs

#定义增量备份位置

daily_databakDir=/backup/mysql/daily_backup

#定义MYSQL数据日志目录

mysqlDataDir=/usr/local/mysql/var

#定义增量日志及目录

eMailFile=$daily_databakDir/email.txt

#eMail=admin@zxsdw.com

#定义变量DATE格式为20150127

DATE=`date +%Y%m%d`

#定义一个总的logFile日志

logFile=$daily_databakDir/mysql$DATE.log

#美化日志模板

echo " " > $eMailFile

echo "-----------------------" >> $eMailFile

#时间格式为15-01-27 01:06:17

echo $(date +"%y-%m-%d %H:%M:%S") >> $eMailFile

echo "-------------------------" >> $eMailFile

#定义删除bin日志的时间范围,格式为20150124010540

TIME=$(date "-d 3 day ago" +%Y%m%d%H%M%S)

#定义需要增量备份数据的时间范围,格式为2015-01-26 01:04:11

StartTime=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S")

###########开始删除操作美化日志标题##############

echo "Delete 3 days before the log" >>$eMailFile

#删除三天前的bin文件,及更新index里的索引记录,美化日志标题

mysql -u$user -p$userPWD -e "purge master logs before ${TIME}" && echo "delete 3 days before log" |tee -a $eMailFile

#查找index索引里的bin 2进制文件并赋值给 i。

filename=`cat $mysqlDataDir/mysql-bin.index |awk -F "/" '{print $2}'`

for i in $filename

do

#########开始增量备份操作,美化日志标题###########

echo "$StartTime start backup binlog" >> $eMailFile

#利用mysqlbinlog备份1天前增加的数据,并gzip压缩打包到增量备份目录

/usr/local/mysql/bin/mysqlbinlog -u$user -p$userPWD -d $database --start-datetime="$StartTime" $mysqlDataDir/$i |gzip >> $daily_databakDir/daily$DATE.sql.gz |tee -a $eMailFile

done

#如果以上备份脚本执行成功,接着运行下面的删除脚本

if [ $? = 0 ]

then

# 删除mtime>32的增量日志备份文件

find $daily_databakDir -name "*.log" -type f -mtime +32 -exec rm {} \; > /dev/null 2>&1

cd $daily_databakDir

echo "Daily backup succeed" >> $eMailFile

else

echo "Daily backup fail" >> $eMailFile

#mail -s "MySQL Backup" $eMail < $eMailFile #备份失败之后发送邮件通知

#fi结束IF判断

fi

#把变量eMailFile的内容替换logFile内容

cat $eMailFile > $logFile

#如果上面的IF判断失败,再次运行删除mtime>32的增量日志备份文件

find $daily_databakDir -name "*.log" -type f -mtime +32 -exec rm {} \; > /dev/null 2>&1

rsync -vzrtopg --delete --progress --password-file=/usr/local/rsync/rsync.passwd root@$ip:/zxs/allimg/$(date -d -1day +%y%m%d) /zxs/allimg/

gunzip < /backup/mysql/daily_backup/ceshi.sql.gz | /usr/local/mysql/bin/mysql -u用户名 -p密码 数据库名 --force

--force参数 忽略错误

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值