mysqldump备份指定mysql数据库脚本
前几天有朋友让帮忙写一个mysql数据备份脚本,于是就有了下文通过mysqldump命令备份数据库的脚本,贴出来跟大家交流,若有问题,请指正,谢谢。
实现功能:
1 备份指定的数据库
2 删除指定天数前的备份文件,默认设定了7天
#!/bin/bash
#
# 文件名:mysql_bak.sh
#
#数据库备份文件的目录,若没有请创建目录或指定备份目录
BACKUP_DIR="/bak/mysqlbak"
#指定mysql所在主机的主机名
DB_HOSTNAME='hostname'
#指定mysql登录用户名
DB_USERNAME='backupuser'
#指定mysql登录密码
DB_PASSWORD='password'
#指定备份的数据库名
DB_NAME="dbname"
#定义当前日期为变量
CURRENT_DATE=$(date +"%Y%m%d$H")
#定义删除N天前的文件变量
DEL_DAYS_BEFORE_FILES=7
#指定mysqldump所在目录
MYSQLDUMP_DIR="/usr/bin"
#备份指定数据库
if $($MYSQLDUMP_DIR/mysqldump -h ${DB_HOSTNAME} -u${DB_USERNAME} -p${DB_PASSWORD} ${DB_NAME} > "${BACKUP_DIR}/${DB_NAME}_${CURRENT_DATE}.sql");then
cd ${BACKUP_DIR}
gzip ${DB_NAME}_${CURRENT_DATE}.sql
echo "${CURRENT_DATE}--Backup database ${DB_NAME} successfully!"
else
echo "${CURRENT_DATE}--Backup database ${DB_NAME} unsuccessfully"
fi
#删除指定N天前的备份文件
find ${BACKUP_DIR} -name "${DB_NAME}_*.sql.gz" -type f -mtime +${DEL_DAYS_BEFORE_FILES} -exec rm {} \; > /dev/null 2>&1
关于mysql备份脚本的使用说明:
1 备份操作是使用mysqldump命令完成,默认设置保留近7天备份文件
2 建议创建备份使用的用户 backupuser(host字段建议指定IP)
>CREATE USER 'backupuser'@'%' IDENTIFIED BY 'password';
>GRANT SELECT,LOCK TABLES,FILE,RELOAD ON *.* TO 'backupuser'@'%';
(个人认为这些权限足够了,若不够自行添加)
3 注意需要在脚本中指定数据库备份目录
4 赋予脚本执行权限
$chmod +x mysql_bak.sh
5 创建定时任务,比如每天凌晨两点执行备份操作
Redhat下操作
$crontab -e
# $PWD是指备份脚本所在路径
# $BACKUP_DIR是指数据库备份目录
* 2 * * * $PWD/mysql_bak.sh &> $BACKUP_DIR/mysql_bak.log
注意:运行脚本用户对所操作目录的权限设置。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341