• 当前位置: 首 页 > 教育百科 > 学历/技能 > 正文

    MYSQL数据库备份

    :2024年07月08日
    DBA小强哥

    每天23:50执行全备份:使用mysqldump进行全备份。实时同步binlog到备用存储:使用rsync或scp等工具将binlog同步到备用存储。定时任务调度:使用cron设置定时任务。

    mysqldump备份

    每天23:50自动进行全备份,并实时同步binlog到备用存储。

    方案概述

    每天23:50执行全备份:使用 mysqldump 进行全备份。

    实时同步binlog到备用存储:使用 rsync 或 scp 等工具将binlog同步到备用存储。

    定时任务调度:使用 cron 设置定时任务。

    详细步骤

    步骤一:准备工作

    确保你的MySQL服务器已安装并运行。

    配置MySQL备份用户,确保有足够的权限进行备份操作。

    步骤二:编写备份脚本

    创建一个脚本 backup.sh 来执行全备份和同步binlog。

     #!/bin/bash

     # 配置部分

     DB_USER="backup_user"

     DB_PASSWORD="password"

     DB_NAME="your_database_name"

     BACKUP_DIR="/path/to/backup"

     BINLOG_DIR="/var/lib/mysql"

     REMOTE_STORAGE="user@remote_host:/path/to/remote_backup"

     LOG_FILE="/path/to/backup/backup.log"

     # 创建备份目录

     mkdir -p $BACKUP_DIR

     # 全备份

     echo "Starting full backup at $(date)" >> $LOG_FILE

     mysqldump -u $DB_USER -p$DB_PASSWORD --all-databases > $BACKUP_DIR/full_backup_$(date +\%F).sql

     if [ $? -eq 0 ]; then

       echo "Full backup completed successfully at $(date)" >> $LOG_FILE

     else

       echo "Full backup failed at $(date)" >> $LOG_FILE

       exit 1

     fi

     # 同步binlog

     echo "Starting binlog sync at $(date)" >> $LOG_FILE

     rsync -avz --progress $BINLOG_DIR/*.binlog $REMOTE_STORAGE

     if [ $? -eq 0 ]; then

       echo "Binlog sync completed successfully at $(date)" >> $LOG_FILE

     else

       echo "Binlog sync failed at $(date)" >> $LOG_FILE

       exit 1

     fi

     echo "Backup and sync process completed at $(date)" >> $LOG_FILE

    步骤三:设置定时任务

    使用 cron 设置定时任务,使脚本每天23:50自动运行。

    步骤四:检查和测试

    检查脚本权限

    编辑 cron 任务:

     crontab -e

    添加以下任务:

     50 23 * * * /path/to/backup.sh

    确保脚本有执行权限:

     chmod +x /path/to/backup.sh

    手动测试脚本

    运行脚本,确保没有错误:

    /path/to/backup.sh

    检查日志

    查看日志文件,确认备份和同步是否成功。

      日常维护

      定期检查备份和日志:确保备份和同步正常进行。

      清理过期备份:定期删除旧的备份文件,以节省存储空间。可以在脚本中添加清理逻辑。

      完整的部署脚本

      以下是最终的 backup.sh 脚本:

       #!/bin/bash

       # 配置部分

       DB_USER="backup_user"

       DB_PASSWORD="password"

       DB_NAME="your_database_name"

       BACKUP_DIR="/path/to/backup"

       BINLOG_DIR="/var/lib/mysql"

       REMOTE_STORAGE="user@remote_host:/path/to/remote_backup"

       LOG_FILE="/path/to/backup/backup.log"

       RETENTION_DAYS=7

       # 创建备份目录

       mkdir -p $BACKUP_DIR

       # 全备份

       echo "Starting full backup at $(date)" >> $LOG_FILE

       mysqldump -u $DB_USER -p$DB_PASSWORD --all-databases > $BACKUP_DIR/full_backup_$(date +\%F).sql

       if [ $? -eq 0 ]; then

         echo "Full backup completed successfully at $(date)" >> $LOG_FILE

       else

         echo "Full backup failed at $(date)" >> $LOG_FILE

         exit 1

       fi

       # 同步binlog

       echo "Starting binlog sync at $(date)" >> $LOG_FILE

       rsync -avz --progress $BINLOG_DIR/*.binlog $REMOTE_STORAGE

       if [ $? -eq 0 ]; then

         echo "Binlog sync completed successfully at $(date)" >> $LOG_FILE

       else

         echo "Binlog sync failed at $(date)" >> $LOG_FILE

         exit 1

       fi

       # 清理旧备份

       echo "Cleaning up old backups" >> $LOG_FILE

       find $BACKUP_DIR -type f -name "*.sql" -mtime +$RETENTION_DAYS -exec rm {} \;

       if [ $? -eq 0 ]; then

         echo "Old backups cleaned up successfully at $(date)" >> $LOG_FILE

       else

         echo "Failed to clean up old backups at $(date)" >> $LOG_FILE

         exit 1

       fi

       echo "Backup and sync process completed at $(date)" >> $LOG_FILE

      配置cron任务

       crontab -e

      添加以下任务:

       50 23 * * * /path/to/backup.sh

      总结

      每天23:50进行全备份

      实时同步binlog到备用存储

      定期清理旧备份

      定期检查和维护

      这样可以确保你的数据库备份和binlog同步能够自动化进行,并且在需要的时候能够恢复数据。

      来源:https://mp.weixin.qq.com/s/n5ATPq7-jIHnKOX3h6DUYA

    [编辑:宋聪乔 &发表于江苏]
    [我要纠错]

    来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
    声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

    关键词: mysqldump 备份 每天 自动 进行
    有价值
    0
    无价值
    0
    猜您喜欢
    最热文章

    暂不支持手机端,请登录电脑端访问

    正在加载验证码......

    请先完成验证