创建mysql备份文件存放目录:
mkdir -p /usr/local/mysqlbackup/mysqldata
cd /usr/local/mysqlbackup
编写全量备份脚本:
备份形式注释在脚本里,可根据实际情况选择修改
vim backmysql.sh
#!/bin/bash
# Name:backmysql.sh
#备份目录
backupdir=/usr/local/mysqlbackup/mysqldata
#备份文件后缀时间
time=_` date +%Y_%m_%d_%H_%M_%S`
#需要备份的数据库名称
db_name=all-databases
#mysql 用户名
db_user=root
#mysql 密码
db_pass=123456
#全量备份
mysqldump -u$db_user -p$db_pass --$db_name > $backupdir/$db_name-$time.sql
#mysqldump -u$db_user -p$db_pass --all-databases|gzip > $backupdir/all-datebases$time.sql
#恢复命令
#mysql –u 用户名 –p < 备份文件.sql
#gzip < network_2017_10_17_10_30_01.sql.gz | mysql -u root -p dataname
#数据库全量备份并压缩
#mysqldump -u$db_user -p$db_pass $db_name|gzip>/usr/local/mysqlbackup/mysqldata/$db_name$time.sql.gz
#删除五分钟之前的备份文件--测试删除命令是否可用
#find /usr/local/mysqlbackup/mysqldata -name "all-databases_*.sql.gz" -type f -mmin +5 -exec rm -rf {} \; > /dev/null 2>&1
#删除7天之前的备份文件
find /usr/local/mysqlbackup/mysqldata -name "all-datebases_*.sql" -type f -mtime +6 -exec rm -rf {} \; > /dev/null 2>&1
#2>/dev/null
#意思就是把错误输出到“黑洞”
#>/dev/null 2>&1
#默认情况是1,也就是等同于1>/dev/null 2>&1。意思就是把标准输出重定向到“黑洞”,还把错误输出2重定向到标准输出1,也就是标准输出和错误输出都进了“黑洞”
#2>&1 >/dev/null
#意思就是把错误输出2重定向到标准出书1,也就是屏幕,标准输出进了“黑洞”,也就是标准输出进了黑洞,错误输出打印到屏幕
或者指定库备份:
#!/bin/bash
# Name:backmysql.sh
#备份目录
backupdir=/usr/local/mysqlbackup/mysqldata
#备份文件后缀时间
time=_` date +%Y_%m_%d_%H_%M_%S`
#需要备份的数据库名称
db_name1=xxx1
db_name2=xxx2
db_name3=xxx3
db_name4=xxx4
#mysql 用户名
db_user=root
#mysql 密码
db_pass=123456
#备份
for i in $db_name{1..4}
do
#备份指定数据库
mysqldump -u$db_user -p$db_pass $i > $backupdir/$i-$time.sql
#删除7天之前的备份文件
find /usr/local/mysqlbackup/mysqldata -name "$i-*.sql" -type f -mtime +6 -exec rm -rf {} \; > /dev/null 2>&1
done
完成脚本编写后,需要给脚本文件执行权限:
chmod +x backmysql.sh
然后我们编写定时任务:
每天凌晨1点钟,定时执行脚本
crontab -e
00 1 * * * /usr/local/mysqlbackup/backmysql.sh
ZZ 保存并退出,自动备份,并清除指定时间之前的备份文件的任务,就完成了!