使用linux系统的定时任务进行指定执行shell脚本进行MySQL的数据库备份。
代码示例(文件名back_db.sh):
#备份目录BACKUP_ROOT=/mnt/server/data_backBACKUP_FILEDIR=$BACKUP_ROOT/files#似乎未起作用BACKUP_LOGDIR=$BACKUP_ROOT/logs#当前日期DATE=$(date +%Y%m%d)######备份#######查询所有数据库#-uroot -p123456表示使用root账号执行命令,且root账号的密码为:123456DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")#DATABASES=$(mysql -uroot -p123456 -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME NOT IN ('sys','mysql','information_schema','performance_schema');" | grep -v "SCHEMA_NAME","ken.io")echo $DATABASES#3天前的日期#echo $(date -d "-3 day" "+%Y%m%d")#循环数据库进行备份for db in $DATABASESdoechoecho ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz#并删除3天前的数据delete_file=${db}_$(date -d "-3 day" "+%Y%m%d").sql.gz#echo $delete_filerm $BACKUP_FILEDIR/$delete_fileecho ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------echodoneecho "done"
备份并删除三天前的记录,如果shell脚本执行失败,则使用notepad++——>编辑——>文档格式转换——>转为unix。
1、sh文件脚本放置没有特别要求。
2、执行命令,在该文件目录下执行:sh back_db.sh
3、添加到Linux系统的定时任务中去
#执行命令进入vi编辑crontab -e#内容添加(测试每天12点52分执行)52 12 * * * /mnt/server/backup_full.sh#按:wq!保存退出#执行查看定时任务列表crontab -l#如果系统没有定时任务则进行安装yum install -y crontab
