首页
编程随笔
Java笔记
Html/Css/Js
Android
后端笔记
服务器搭建
BUG收集
Java异常
Android异常
在线工具
Json格式化
编码/解码
Epub在线编辑
登录
发布文章
个人文章
退出登录
首页
技术教程
BUG收集
在线工具
资源下载
登录
发布文章
退出登录
搜索
当前位置:
首页
-
博客
- 正文
关闭
MySql两台服务器之间互相备份脚本
更新时间:2024-06-22 13:44:07
阅读数:593
发布者:落幕
c### 创建导出sql和同步脚本脚本 需要不同直接的服务器免密登录: [Linux免密登录参考文章](http://blog.speechb.com/detail/d770da3f680c4717bdaa593e31f2c645 "Linux免密登录") touch backup_mysql.sh ```shell #!/bin/bash # MySQL数据库信息 DB_USER="your_mysql_username" DB_PASS="your_mysql_password" DB_NAME="your_database" # 远程服务器信息 REMOTE_HOST="your_remote_host" REMOTE_USER="your_remote_username" REMOTE_DIR="/path/to/remote/directory/" # 导出 SQL 文件名 EXPORT_FILE="/tmp/${DB_NAME}_$(date +'%Y%m%d').sql" # 导出数据库到临时文件 mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$EXPORT_FILE" # 检查导出是否成功 if [ $? -eq 0 ]; then echo "MySQL database $DB_NAME successfully exported to $EXPORT_FILE" else echo "Error: Failed to export MySQL database $DB_NAME" exit 1 fi # 使用 scp 将文件传输到远程服务器 scp -P 22 "$EXPORT_FILE" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR" # 检查传输是否成功 if [ $? -eq 0 ]; then echo "File successfully copied to $REMOTE_HOST:$REMOTE_DIR" else echo "Error: Failed to copy file to $REMOTE_HOST" exit 1 fi # 删除本地临时文件 rm "$EXPORT_FILE" echo "Daily backup and transfer completed." ``` 将以上脚本保存为一个文件,比如 backup_mysql.sh。 使用 chmod +x backup_mysql.sh 命令添加执行权限:chmod +x backup_mysql.sh。 可以使用 crontab -e 命令编辑 crontab 文件,添加以下行来设置每天1点执行备份任务 0 1 * * * /path/to/backup_mysql.sh >/dev/null 2>&1 其中 /path/to/backup_mysql.sh 是脚本的实际路径。
/dev/null
表示不打印日志,可以替换成具体文件路径,记录相应日志,后续方便查看 添加操作权限 chmod +x /path/to/backup_mysql.sh 这样设置后,每天1点钟脚本就会执行一次,将指定的 MySQL 数据库导出为 SQL 文件,并通过 SCP 拷贝到指定的远程服务器上。 ### 定时删除超一个月文件(备份的服务器) ```shell #!/bin/bash # 要清理的目录路径 BACKUP_DIR="/path/to/your/backup/directory" # 当前日期 CURRENT_DATE=$(date +%s) # 计算一个月前的日期(秒数) ONE_MONTH_AGO=$(date -d '1 month ago' +%s) # 查找并删除一个月前的备份文件 find "$BACKUP_DIR" -type f -name "*.sql" -mtime +30 -exec rm {} \; # 输出清理结果 echo "Old backup files older than one month have been deleted." ``` 将以上脚本保存为一个文件,比如 cleanup_backup.sh。 使用 chmod +x cleanup_backup.sh 命令添加执行权限:chmod +x cleanup_backup.sh。 可以将该脚本添加到 crontab 中,以每天的固定时间自动执行清理操作。编辑 crontab 文件: crontab -e 0 2 * * * /path/to/cleanup_backup.sh >/dev/null 2>&1 这样设置后,每天凌晨2点钟脚本就会执行一次,清理掉一个月前的备份文件。