文章目录
- 一、MySQL备份脚本
- 1.本地部署的MySQL
- 1.1 备份脚本
- 1.2 添加权限
- 1.3 执行脚本
- 1.4 计划任务自动备份(可选)
- 2.备份Docker部署的MySQL
一、MySQL备份脚本
1.本地部署的MySQL
1.1 备份脚本
# vi mysql_backup.sh
#!/bin/bash
# MySQL连接参数
USER="MySQL用户名"
PASSWORD="MySQL密码"
HOST="主机地址"
PORT="3306"
DATABASE="数据库名" # 备份文件存放目录
BACKUP_DIR="/mnt/backup/mysql" # 当前的日期时间,用于备份文件名
DATE=$(date +"%Y%m%d%H%M%S") # 完整的备份文件名
BACKUP_FILE="$BACKUP_DIR/backup_$DATABASE_$DATE.sql" # 检查备份目录是否存在,如果不存在则创建
if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" echo "已创建备份目录: $BACKUP_DIR"
fi # 使用mysqldump进行备份
mysqldump -h$HOST -P$PORT -u$USER -p$PASSWORD $DATABASE > "$BACKUP_FILE" # 检查备份是否成功
if [ $? -eq 0 ]; then echo "数据库 $DATABASE 已成功备份到 $BACKUP_FILE"
else echo "备份数据库时出错 $DATABASE"
fi # (可选)删除旧的备份文件,例如只保留最近7天的备份
# find $BACKUP_DIR -name "backup_$DATABASE_*.sql" -mtime +7 -delete
1.2 添加权限
# 添加执行权限
chmod +x mysql_backup.sh
1.3 执行脚本
./mysql_backup.sh
1.4 计划任务自动备份(可选)
# 每周六凌晨一点自动执行数据库备份脚本
# crontab -e
0 1 * * 6 /mnt/mysql_backup.sh
2.备份Docker部署的MySQL
注:如果MySQL是docker部署的,需将上方"1.1"数据库备份脚本拷贝到MySQL容器内执行。
# 将脚本复制到容器中
docker cp ./mysql_backup.sh $CONTAINER_NAME_OR_ID:/tmp/
例:docker cp ./mysql_backup.sh mysql:/tmp/
# 在容器中执行脚本
# 注意:这里我们不需要-it选项,因为我们只是要执行命令,而不是交互式shell
docker exec -it $CONTAINER_NAME_OR_ID /bin/bash -c "/tmp/mysql_backup.sh" 例:# docker exec -it mysql /bin/bash -c "/tmp/mysql_backup.sh"mysqldump: [Warning] Using a password on the command line interface can be insecure.数据库 oneapi 已成功备份到 /mnt/backup/mysql/backup_20240531095450.sql
# 如果LATEST_BACKUP_FILE为空,说明没有找到任何备份文件
docker cp $CONTAINER_NAME_OR_ID:$BACKUP_DIR_IN_CONTAINER/$LATEST_BACKUP_FILE $LOCAL_BACKUP_DIR/
例:docker cp mysql:/mnt/backup/mysql/backup_20240531095450.sql ./
注:脚本默认备份数据在docker容器中也有一份,为了避免备份文件占用mysql容器空间,建议登录容器中删除。