#!/bin/bash 配置变量 DB_USER="your_username" DB_PASSWORD="your_password" DB_NAME="your_database" BACKUP_DIR="/path/to/your/backup/dir" DATE=$(date +%Y%m%d%H%M%S) LOG_FILE="$BACKUP_DIR/backup_$DATE.log" 创建备份目录 mkdir p "$BACKUP_DIR" 备份数据库结构 mysqldump u "$DB_USER" p"$DB_PASSWORD" "$DB_NAME" singletransaction routines triggers > "$BACKUP_DIR/$DB_NAME_$DATE.sql" 备份数据库数据 注意:这里假设数据库是InnoDB存储引擎,对于非InnoDB引擎,可能需要使用不同的方法 启动MySQL的复制功能来保证数据一致性 echo "Starting replication to ensure data consistency..." cat <<EOF | mysql u "$DB_USER" p"$DB_PASSWORD" "$DB_NAME" STOP SLAVE; START SLAVE; EOF 备份数据文件 注意:以下命令需要root权限 cp a /var/lib/mysql/"$DB_NAME" "$BACKUP_DIR/$DB_NAME_$DATE" 检查备份文件是否存在 if [ f "$BACKUP_DIR/$DB_NAME_$DATE.sql" ] && [ d "$BACKUP_DIR/$DB_NAME_$DATE" ]; then echo "Backup completed successfully." | tee a "$LOG_FILE" else echo "Backup failed." | tee a "$LOG_FILE" fi 清理旧的备份文件 可以根据需要设置保留的备份天数 find "$BACKUP_DIR" name "*.sql" mtime +7 exec rm {} ; 2>/dev/null find "$BACKUP_DIR" name "*$DB_NAME*" type d mtime +7 exec rm rf {} ; 2>/dev/null 重启MySQL的复制功能 echo "Reverting replication to original state..." cat <<EOF | mysql u "$DB_USER" p"$DB_PASSWORD" "$DB_NAME" STOP SLAVE; START SLAVE; EOF
脚本说明:
1、配置变量:设置数据库用户、密码、数据库名、备份目录等。
2、创建备份目录:如果备份目录不存在,则创建它。
3、备份数据库结构:使用mysqldump
命令备份数据库结构。
4、备份数据文件:通过复制MySQL的数据目录来备份数据文件。
5、检查备份文件:检查备份文件是否存在,并记录到日志文件中。
6、清理旧的备份文件:删除超过指定天数的备份文件。
7、重启MySQL的复制功能:在备份完成后,将MySQL的复制功能恢复到原始状态。
注意事项:
确保脚本有执行权限:chmod +x script_name.sh
MySQL用户需要有足够的权限来备份数据库。
脚本中的备份目录需要有足够的磁盘空间来存储备份文件。
根据实际情况调整备份策略和清理规则。
如果数据库中包含非InnoDB存储引擎的表,可能需要使用不同的备份方法。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1139528.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复