在日常的Linux运维工作中,数据库备份是一项至关重要的任务。下面是一个简单的脚本案例,用于自动备份MySQL数据库,并将备份文件压缩保存。
脚本内容:
#!/bin/bash# MySQL数据库相关配置
DB_USER="your_mysql_user"
DB_PASS="your_mysql_pass"
DB_NAME="your_database_name"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/mysql_backup_$DATE.sql"# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR# 使用mysqldump备份数据库
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE# 检查备份是否成功
if [ $? -eq 0 ]; thenecho "MySQL数据库备份成功: $BACKUP_FILE"
elseecho "MySQL数据库备份失败!"exit 1
fi# 压缩备份文件
gzip $BACKUP_FILE
COMPRESSED_FILE="$BACKUP_FILE.gz"
echo "备份文件已压缩: $COMPRESSED_FILE"# 删除旧备份(可选,可根据需要设置保留天数)
find $BACKUP_DIR -name "mysql_backup_*.gz" -mtime +7 -delete
echo "已删除7天前的旧备份文件。"# 发送备份完成通知邮件(可选)
RECIPIENT="your_email@example.com"
SUBJECT="MySQL数据库备份完成通知"
BODY="MySQL数据库已成功备份并压缩,备份文件位于:$COMPRESSED_FILE"
echo "$BODY" | mail -s "$SUBJECT" $RECIPIENTecho "脚本执行完毕。"
脚本使用说明:
- 将上述脚本保存为一个文件,例如
mysql_backup.sh
。 - 修改脚本中的
your_mysql_user
、your_mysql_pass
、your_database_name
和/path/to/backup/directory
为实际的值。 - 为脚本添加执行权限:
chmod +x mysql_backup.sh
。 - 运行脚本:
./mysql_backup.sh
。
脚本功能:
- 使用
mysqldump
命令备份指定的MySQL数据库到指定目录。 - 检查备份是否成功,并输出相应的提示信息。
- 将备份文件压缩为
.gz
格式。 - 可选功能:删除指定天数前的旧备份文件,以避免占用过多的磁盘空间。
- 可选功能:发送备份完成通知邮件给指定的收件人。
这个脚本可以根据实际需求进行扩展和修改,例如添加更多的数据库备份、备份到其他存储介质或云存储等。在运维工作中,自动化脚本可以大大提高工作效率和减少人为错误。