1. 确认MySQL数据库信息: 确保你知道MySQL数据库的用户名、密码和数据库名称。
  2. 检查磁盘空间: 确保服务器上有足够的空间来存储备份文件。
  3. 具备必要权限: 确保你有足够的权限来访问MySQL数据库和创建定时任务。

1. 创建备份目录

首先,需要一个用于存储备份文件的目录:

sudo mkdir -p /usr/local/backup_mysql_sql

2. 编写备份脚本

在脚本中包含数据库的访问信息,包括端口号(如果非默认端口):

sudo vi /usr/local/backup_mysql_sql/mysql_backup.sh

在文件中添加以下内容:

#!/bin/bash

# MySQL数据库访问信息
USER="root"
PASSWORD="root"
DATABASE="api_service"
HOST="localhost"
PORT="3306"  # 默认端口是3306,如果不同请修改

# 备份保存路径和文件名格式
BACKUP_DIR="/usr/local/backup_mysql_sql"
DATE=$(date +%Y%m%d%H%M)

# 创建备份
# 使用gzip进行压缩,使用--single-transaction确保InnoDB的一致性
mysqldump -h$HOST -P$PORT -u$USER -p$PASSWORD --single-transaction $DATABASE | gzip > $BACKUP_DIR/mysql_backup_$DATE.sql.gz

if [ $? -eq 0 ]; then
    echo "Backup completed successfully at $(date)" >> $BACKUP_DIR/backup_log.txt
else
    echo "Backup failed at $(date)" >> $BACKUP_DIR/backup_log.txt
fi

# 可选:删除7天前的旧备份
find $BACKUP_DIR/* -mtime +7 -exec rm {} \;

确保替换脚本中的数据库访问信息和路径。

3. 脚本权限设置

给予脚本执行权限:

sudo chmod +x  /usr/local/backup_mysql_sql/mysql_backup.sh

4. 配置Cron定时任务

打开Cron配置文件进行编辑:

crontab -e

添加一行以设置备份任务的执行时间,例如每天凌晨1点:

0 1 * * * /usr/local/backup_mysql_sql/mysql_backup.sh

保存并退出编辑器。

5. 测试备份脚本

手动运行脚本以确保一切正常:

/usr/local/backup_mysql_sql/mysql_backup.sh

注意:如果在Windows下创建sh脚本,再上传linux,可能有-bash: ./mysql_backup.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录报错,这些字符是由Windows下的换行符 \r\n 引入的。,执行下面命令即可替换`

sed -i 's/\r$//' /usr/local/backup_mysql_sql/mysql_backup.sh

替换完成之后再运行脚本就可以了`

检查备份目录以确认备份文件已创建:

ls -lh /usr/local/backup_mysql_sql

6. 查看备份日志

备份完成后,您可以查看备份日志以确认操作记录:

cat /usr/local/backup_mysql_sql/backup_log.txt

7. 停止定时备份

如果您想停止自动备份,可以通过编辑Cron任务来实现:

crontab -e

然后注释掉或删除与备份脚本相关的行,保存并退出。

8. 清理备份文件

如果需要手动删除某些备份文件,可以直接在备份目录中进行删除:

rm /usr/local/backup_mysql_sql/mysql_backup_*.sql

或者调整脚本中的自动删除策略。

注意事项

  • 定期检查备份文件确保备份过程正常运行。
  • 根据实际需要调整备份频率和保留时长。
  • 考虑将备份文件存储在远程或云存储上,以增加数据安全性。
  • 定期测试恢复流程以确保备份文件可用。

总结

通过上述步骤,可以为MySQL数据库设置定时自动备份。这对于保护您的数据免受意外丢失的风险至关重要。确保定期检查备份文件,并在必要时调整备份策略。

Last modification:December 18, 2023
如果觉得这篇技术文章对你有用,请随意赞赏