• Mysql的定时备份与恢复


    MySQL定时备份与还原

    MySQL备份方案

    物理备份

    这种备份方式将数据库的实际文件复制到另一个位置。常见的物理备份工具包括mysqldumpPercona XtraBackup。具体操作如下:

    • 使用mysqldump

      命令备份数据库:

      mysqldump -u username -p database_name > backup.sql
      
      • 1
    • 使用Percona XtraBackup

      进行物理备份:

      bashCopy code
      xtrabackup --backup --user=username --password=password --target-dir=/backup/directory
      
      • 1
      • 2

    逻辑备份

    这种备份方式将数据库中的数据导出为SQL语句,然后可以通过导入这些SQL语句来还原数据。mysqldump通常用于逻辑备份。

    MySQL还原方案

    使用SQL备份文件还原

    • 通过以下命令还原数据库:

      mysql -u username -p database_name < backup.sql
      
      • 1

    使用物理备份还原

    • 使用Percona XtraBackup

      进行物理还原:

      xtrabackup --copy-back --target-dir=/backup/directory
      
      • 1

    定时备份与定时还原

    定时备份和还原可以通过定时任务工具来实现,如Linux中的cron或Windows中的计划任务。以下是一些常见的步骤:

    定时备份

    1. 创建一个Shell脚本或批处理文件,其中包含备份命令(如使用mysqldump)。

    2. 使用定时任务工具(如cron)设置定时执行脚本。例如,要每天晚上备份数据库,您可以创建一个cron任务:

      0 0 * * * /path/to/backup-script.sh
      
      • 1

      这将在每天午夜执行备份脚本。

    定时还原

    1. 创建一个还原脚本,其中包含还原数据库的命令(如使用mysql)。
    2. 使用定时任务工具设置定时执行还原脚本。请确保在执行还原之前,已备份好了需要还原的数据库文件。

    请注意,定时还原可能需要更谨慎的计划,因为还原数据库可能会导致数据丢失。通常,定时备份是为了紧急情况下的数据恢复,而不是定期还原。定期还原通常由开发和测试团队在开发和测试环境中执行。

    总结

    这里我选择的是mysqldump 工具来进行备份与还原的。下面将备份与还原的代码展示一下:

    备份

    backup_mysql.sh

    #!/bin/bash
    
    # MySQL credentials
    DB_USER="xxxx"
    DB_PASS="xxxx"
    DB_NAME="xxxx"
    DB_HOST="xxxxxx"
    DB_PORT="xxx"
    # Backup directory
    BACKUP_DIR="/data/db/backup/directory"
    # Create backup filename with timestamp
    BACKUP_FILENAME="backup_$(date +%Y%m%d).sql"
    # Backup full path
    BACKUP_FULLNAME="$BACKUP_DIR/$BACKUP_FILENAME"
    
    
    # Perform backup using mysqldump
    mysqldump -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FULLNAME
    
    echo "MySQL backup completed: $BACKUP_FULLNAME"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    如果需要指定表的话:

    mysqldump -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASS $DB_NAME  table_a table_b table_c > $BACKUP_FULLNAME
    
    • 1

    还原

    还原脚本:recover.sh

    #!/bin/bash
    
    # MySQL credentials
    DB_USER="xxx"
    DB_PASS="xxx"
    DB_NAME="xxx"
    DB_HOST="xxxxxx"
    DB_PORT="xxx"
    # Backup directory
    BACKUP_DIR="/data/db/backup/directory"
    # Create backup filename with timestamp
    BACKUP_FILENAME="backup_$(date +%Y%m%d)_tt.sql"
    # Backup full path
    BACKUP_FULLNAME="$BACKUP_DIR/$BACKUP_FILENAME"
    # Perform backup using mysqldump
    mysql -h $DB_HOST -P $DB_PORT -u $DB_USER -p$DB_PASS $DB_NAME < $BACKUP_FILENAME
    
    echo "MySQL recover completed: $BACKUP_FULLNAME"
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    定时备份与还原

    添加linux 定时任务:

    1. 打开终端:打开一个终端窗口,以便在命令行中设置和管理cron任务。

    2. 编辑cron表:使用crontab命令编辑当前用户的cron表。要编辑用户的cron表,可以运行以下命令:

      crontab -e
      
      • 1

    3.例如,要每天午夜执行一个脚本(假设脚本位于/path/db/backup_mysql.sh),您可以添加以下行:

    0 0 * * * /path/to/script.sh
    
    • 1

    总之,MySQL备份与还原是数据库管理中的关键任务,根据您的需求和情况选择适当的备份和还原策略,并使用定时任务工具来自动化这些操作以确保数据的安全性。

  • 相关阅读:
    三国志14信息查询小程序(历史武将信息一览)制作更新过程05-后台接口的编写及调用
    Dubbo基于注解方式的配置
    独家揭秘:小程序销售额破千万,他们怎么做到的
    第二期书生浦语大模型训练营第四次笔记
    python 队列生产者消费者爬虫
    ABAP bgRFC
    python 多线程
    Altium Designer
    uniapp uni-list-item @click,uniapp uni-list-item带参数跳转
    leetcode143-Reorder List
  • 原文地址:https://blog.csdn.net/wagnteng/article/details/132803740