• mysql 每日自动备份数据库


    MySQL 中,你可以使用定时任务来每日自动备份数据库。通常,最常用的方法是使用操作系统的定时任务工具(如cron)来调度备份操作。以下是一些步骤来设置每日定时备份MySQL数据库:

    1. 创建备份脚本:首先,创建一个备份脚本,该脚本将执行MySQL备份操作。你可以使用mysqldump命令来执行备份。以下是一个简单的备份脚本示例(假设你已经设置了MySQL用户名和密码的环境变量):

      #!/bin/bash
      
      # 定义 MySQL 用户名和密码
      MYSQL_USER="your_username"
      MYSQL_PASSWORD="your_password"
      
      # 定义备份目录和文件名
      backup_dir="/path/to/backup/directory"
      backup_file="$backup_dir/backup-$(date +\%Y\%m\%d).sql"
      
      # 使用 mysqldump 备份数据库
      mysqldump --user=$MYSQL_USER --password=$MYSQL_PASSWORD --all-databases > $backup_file
      
      # 压缩备份文件
      gzip $backup_file
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15

      在这种情况下,你需要将 your_username 和 your_password 替换为实际的 MySQL 用户名和密码,并确保脚本文件中的用户名和密码是安全的(不要将它们硬编码在脚本中,或者确保脚本文件有适当的权限来保护这些敏感信息)。

      无论你选择哪种方式,都要确保用户名和密码的安全性,以防止未经授权的访问。

    2. 设置脚本权限:在终端中运行以下命令,以确保备份脚本具有执行权限:

      chmod +x your_backup_script.sh
      
      
      • 1
      • 2
    3. 设置定时任务:使用操作系统的定时任务工具来创建一个每日备份任务。对于Linux系统,通常使用cron来实现。运行以下命令来编辑当前用户的cron表:

      crontab -e
      
      
      • 1
      • 2

      然后,添加以下行来每天执行备份脚本(假设备份脚本叫做your_backup_script.sh,并且每天备份在凌晨2点进行):

      0 2 * * * /path/to/your_backup_script.sh
      
      
      • 1
      • 2
    4. 保存并退出:保存cron表达式的修改并退出编辑器。
      现在,你已经设置了一个每日定时任务,它会在指定时间自动运行备份脚本,将MySQL数据库备份到指定目录。确保定期检查备份文件,以确保备份正在按计划运行并且没有问题。

    注意:mysqldump 命令中的 --user 和 --password 参数只需要提供数据库的用户名和密码,而不需要指定数据库的地址。这是因为在大多数情况下,mysqldump 命令会默认连接到本地 MySQL 服务器(即 localhost)。

    如果你的 MySQL 数据库位于不同的主机上,或者你希望备份不同主机上的数据库,那么你需要通过 --host 参数来指定数据库的地址。例如:

    mysqldump --host=your_database_host --user=your_username --password=your_password --all-databases > $backup_file
    
    
    • 1
    • 2

    又或者你的端口不是默认的3306,可以通过–port来制定端口。例如:

    mysqldump --host=your_database_host --port=your_database_port --user=your_username --password=your_password --all-databases > $backup_file
    
    
    • 1
    • 2

    完整脚本如下:

    #!/bin/bash
    
    # MySQL数据库连接参数
    DB_HOST="your_database_host"
    DB_PORT="your_database_port"
    DB_USER="your_username"
    DB_PASSWORD="your_password"
    
    # 备份目录和文件名
    backup_dir="/path/to/backup/directory"
    backup_file="$backup_dir/backup-$(date +\%Y\%m\%d).sql"
    
    # 使用mysqldump备份数据库
    mysqldump --host=$DB_HOST --port=$DB_PORT --user=$DB_USER --password=$DB_PASSWORD --all-databases > $backup_file
    
    # 检查备份是否成功
    if [ $? -eq 0 ]; then
      echo "数据库备份成功,文件保存在: $backup_file"
    else
      echo "数据库备份失败"
    fi
    
    # 可选:压缩备份文件
    gzip $backup_file
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    但还有种情况,如果你的 MySQL 服务器是运行在 Docker 容器中,备份操作会有一些差异。你需要在 Docker 环境中执行备份命令,以确保能够连接到容器内的 MySQL 服务器。以下是在 Docker 中备份 MySQL 数据库的一般步骤:

    1. 查找 MySQL 容器的名称或 ID:首先,你需要查找正在运行的 MySQL 容器的名称或 ID。你可以使用以下命令来列出正在运行的容器并查找 MySQL 容器:

      docker ps
      
      
      • 1
      • 2

      查找包含 MySQL 服务的容器并记下其名称或 ID。

    2. 执行备份操作:使用以下命令在 MySQL 容器中执行备份操作。假设容器名称为 mysql-container:

      docker exec mysql-container mysqldump -u your_username -pYourPassword --all-databases > /path/to/backup/directory/backup-$(date +\%Y\%m\%d).sql
      
      
      • 1
      • 2

    完整脚本如下:

    #!/bin/bash
    
    # 定义MySQL容器名称或ID
    MYSQL_CONTAINER="mysql-container"
    
    # 定义MySQL数据库连接参数
    MYSQL_USER="your_username"
    MYSQL_PASSWORD="YourPassword"
    MYSQL_HOST="localhost"  # 如果MySQL容器在同一主机上,可以使用localhost
    
    # 定义备份目录
    BACKUP_DIR="/path/to/backup/directory"
    
    # 获取当前日期作为备份文件名的一部分
    CURRENT_DATE=$(date +\%Y\%m\%d)
    
    # 要备份的数据库列表,用空格分隔
    DATABASES="database1 database2 database3"
    
    # 创建备份目录
    mkdir -p $BACKUP_DIR
    
    # 循环备份每个数据库
    for DB_NAME in $DATABASES
    do
      # 生成备份文件名
      BACKUP_FILE="$BACKUP_DIR/${DB_NAME}_${CURRENT_DATE}.sql"
    
      # 使用mysqldump备份数据库到指定文件
      docker exec $MYSQL_CONTAINER mysqldump -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD $DB_NAME > $BACKUP_FILE
    
      # 检查备份是否成功
      if [ $? -eq 0 ]; then
        echo "数据库 $DB_NAME 备份成功,文件保存在: $BACKUP_FILE"
        
        # 压缩备份文件为ZIP格式
        zip "$BACKUP_FILE.zip" $BACKUP_FILE
        rm $BACKUP_FILE  # 删除原始SQL备份文件
        echo "备份文件已压缩为 $BACKUP_FILE.zip"
      else
        echo "数据库 $DB_NAME 备份失败"
      fi
    done
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    注意机器上有没有安装zip命令,没有的话需要安装下
    yum install zip

    大致步骤就这些,可能运行的时候会报mysqldump 访问权限不足,或者用户操作数据库的权限不足等问题,这个自行解决哈

  • 相关阅读:
    华为认证网络工程师2022年最新学习路线整理
    AI Studio星河社区生产力实践:基于文心一言快速搭建知识库问答
    Docker目录映射
    CListCtrl设置只显示单列 2023/9/5 下午4:07:05
    跳转微信小程序提示页面不存在或者页面空白的解决办法【图文教程】
    Hive (八) --------- 函数
    C++的string你可能会用,但是你模拟实现过了吗?带你实现以下string的重要接口!
    SSM学习——Rest风格与案例(12)
    论文剽窃者“自爆家门”?CVPR 最后一天上演“一出好戏 ”!
    ActivityPub 笔记
  • 原文地址:https://blog.csdn.net/weixin_44981329/article/details/132987676