一个用于MySQL数据库备份的简单Bash脚本

时间:2019-05-19 01:25:34  来源:igfitidea点击:

问:如何定时执行MySQL数据库备份?
用于MySQL数据库备份的bash脚本。
在本教程中,我们将发现一个简单的bash脚本,它执行MySQL数据库的备份、归档和存储在本地系统上。
此脚本还将从磁盘中删除较旧的备份以释放空间。
我们可以指定在本地磁盘上保存备份的天数。
我们还可以使用本教程备份MySQL数据库并在远程FTP服务器上存储副本。

创建MySQL备份脚本

现在,将以下内容复制到脚本文件中(如:/backup/mysql-backup.sh)并保存到Linux系统中。

#!/bin/bash

################################################################
##
##   MySQL Database Backup Script 
##
################################################################

export PATH=/bin:/usr/bin:/usr/local/bin
TODAY=`date +"%d%b%Y"`

################################################################
################## 更新下面的值  ########################

DB_BACKUP_PATH='/backup/dbbackup'
MYSQL_HOST='localhost'
MYSQL_PORT='3306'
MYSQL_USER='root'
MYSQL_PASSWORD='mysecret'
DATABASE_NAME='mydb'
BACKUP_RETAIN_DAYS=30   ## Number of days to keep local backup copy

#################################################################

mkdir -p ${DB_BACKUP_PATH}/${TODAY}
echo "Backup started for database - ${DATABASE_NAME}"


mysqldump -h ${MYSQL_HOST} \
		  -P ${MYSQL_PORT} \
		  -u ${MYSQL_USER} \
		  -p${MYSQL_PASSWORD} \
		  ${DATABASE_NAME} | gzip > ${DB_BACKUP_PATH}/${TODAY}/${DATABASE_NAME}-${TODAY}.sql.gz

if [ $? -eq 0 ]; then
  echo "Database backup successfully completed"
else
  echo "Error found during backup"
  exit 1
fi


##### Remove backups older than {BACKUP_RETAIN_DAYS} days  #####

DBDELDATE=`date +"%d%b%Y" --date="${BACKUP_RETAIN_DAYS} days ago"`

if [ ! -z ${DB_BACKUP_PATH} ]; then
      cd ${DB_BACKUP_PATH}
      if [ ! -z ${DBDELDATE} ] && [ -d ${DBDELDATE} ]; then
            rm -rf ${DBDELDATE}
      fi
fi

### End of script ####

之后,根据环境更改脚本“更新下面的值”部分中的一些配置值。

创建或下载脚本后,请确保设置执行权限以正常运行。

chmod +x /backup/mysql-backup.sh

在Crontab 定时执行脚本

现在将脚本放到crontab计划任务中,每天运行并定期完成备份。
在系统上使用' crontab -e '命令编辑crontab。
添加以下内容,设置在凌晨2点启用备份。

0 2 * * * root /backup/mysql-backup.sh

保存crontab文件。
启用cron后,脚本将自动进行备份,每周或每月都检查一下备份以确保备份成功。