1 简单概述
mysqldump
是MySQL自带的一个命令,用于备份数据库。它可以导出数据库的结构和数据。以下是一些常用的备份示例:
备份所有数据库:
mysqldump -u root -p --all-databases > all_databases.sql
备份指定数据库:
mysqldump -u root -p --databases mydb1 mydb2 > mydb_backup.sql
备份数据库并压缩:
mysqldump -u root -p mydb | gzip > mydb_backup.sql.gz
2 编写脚本
上面的命令都是单次执行生效的,如果想持续备份,需要做成脚本,并设置定时任务
以下脚本是备份是针对整个数据库,你可以根据需要进行备份特定数据库
#!/bin/bash
# ====================================================
# MySQL 一键备份脚本
# 作者:liyb
# 说明:自动备份所有数据库 + 自动清理历史 + 日志记录
# ====================================================
# === 基本配置 ===
BACKUP_DIR="/data/db_backups" # 备份目录
MYSQL_USER="root" # 数据库用户名
MYSQL_PASS="123456" # 数据库密码
MYSQL_HOST="localhost" # 数据库地址
MYSQL_PORT="3306" # 数据库端口
RETENTION_DAYS=7 # 备份保留天数
DATE_TAG=$(date +"%Y-%m-%d_%H-%M-%S") # 时间戳
LOG_FILE="/var/log/mysql_backup.log" # 日志文件
DUMP_FILE="${BACKUP_DIR}/all-databases-${DATE_TAG}.sql"
ARCHIVE_FILE="${DUMP_FILE}.tar.gz"
# === 创建备份目录 ===
[ ! -d ${BACKUP_DIR} ] && mkdir -p ${BACKUP_DIR}
# === 日志函数 ===
log() {
echo"$(date +"%Y-%m-%d %H:%M:%S") : $1" | tee -a $LOG_FILE
}
# === 开始备份 ===
log"==== 开始 MySQL 数据库备份 ===="
# === 备份所有数据库 ===
log"正在备份所有数据库到 ${DUMP_FILE}"
/data/mysql/bin/mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} -h${MYSQL_HOST} -P${MYSQL_PORT} --all-databases > ${DUMP_FILE}
if [ $? -eq 0 ]; then
log"数据库导出成功"
else
log"数据库导出失败!请检查配置!"
exit 1
fi
# === 压缩备份文件 ===
log"正在压缩备份文件..."
tar -czf ${ARCHIVE_FILE} -C ${BACKUP_DIR} $(basename ${DUMP_FILE})
if [ $? -eq 0 ]; then
log"压缩完成:${ARCHIVE_FILE}"
rm -f ${DUMP_FILE}# 删除未压缩的 SQL 文件
else
log"压缩失败!"
exit 1
fi
# === 删除 N 天前的备份文件 ===
log"正在清理 ${RETENTION_DAYS} 天前的备份..."
find ${BACKUP_DIR} -name "*.tar.gz" -type f -mtime +${RETENTION_DAYS} -exec rm -f {} \;
log"备份完成!文件存储在 ${ARCHIVE_FILE}"
log"==== MySQL 数据库备份结束 ===="
配置说明:
BACKUP_DIR | |
MYSQL_USER/PASS | |
RETENTION_DAYS | |
tar -czf | |
find命令 | |
log() 函数 |
【温馨提示】脚本需要在测试环境模拟再到生产环境上执行,测试通过再制定定时任务
做成定时任务
在crontab里面添加定时任务,进行定时备份
crontab -e
# 将内容写入:每天凌晨一点进行备份
0 1 * * * bin/bash root/mysql_bakcup.sh
定时任务会把执行日志输出到/var/log/mysql_backup.log中,这个目录可以在脚本里面自定义
查看备份效果
关注小编,添,可进入技术交流群。

文章转载自运维李哥不背锅,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




