Skip to content

使用mysqldump+windows定时任务进行备份mysql容器数据

  • 备份步骤

    1. 备份.sql文件到容器内部的目录
    2. 拷贝文件到宿主机目录下,我想要存放备份的路径是"D:\workSpace\1_development_environment\docker_data\mysql\backup\data"
    3. 使用windows定时任务实现每天定时定点执行bat脚本
  • 实现步骤

    1. 创建一个bat脚本,我本机的路径是 "D:\workSpace\1_development_environment\docker_data\mysql\backup\script\backup.bat",内容如下,目标效果是在"D:\workSpace\1_development_environment\docker_data\mysql\backup\data"文件夹下按照每天的日期生成名为carb_ignite-YYYY-MM-DD.sql

      bash
      @echo off
      REM 获取当前日期,格式为yyyy-MM-dd
      set "dt=%date:~0,4%-%date:~5,2%-%date:~8,2%"
      
      REM 1. 在容器内创建备份目录(如果已存在不会有影响)
      docker exec mysql mkdir -p /backup
      
      REM 2. 备份数据库到容器内的 /backup 目录
      docker exec mysql sh -c "mysqldump -uroot -proot --databases carb_ignite > /backup/carb_ignite-%dt%.sql"
      
      REM 3. 将备份文件拷贝到本地
      docker cp mysql:/backup/carb_ignite-%dt%.sql D:\workSpace\1_development_environment\docker_data\mysql\backup\data\carb_ignite-%dt%.sql
      
      echo 备份完成,文件已保存到 D:\workSpace\1_development_environment\docker_data\mysql\backup\data\carb_ignite-%dt%.sql
      pause
    2. 创建windows定时任务

      1. 打开任务计划程序页面(或win + r 输入 taskschd.msc

        image-20250623203925816

      2. 点击创建任务

        image-20250623203938235

      3. 常规标签下:填写基本信息

        image-20250623204005102

      4. 触发器标签下:定义每天12点执行

        image-20250623204033868

      5. 操作标签下:设置信息,注意:"起始于选项"的值是.bat存放的路径,所以我要填D:\workSpace\1_development_environment\docker_data\mysql\backup\script\,最后面的\一定要有!!!

        image-20250623204241715

      6. 设置成功后,就可以在"任务计划程序库"中查看到了,当然可以右击立即运行查看效果

        image-20250623204333085

    3. 备份后的结果,在容器中备份成功、在宿主机目标文件夹下备份成功

      image-20250623204905579

      image-20250623203538174

  • 补充:mysqldump常用操作

    • 备份全部数据库的数据和结构

      shell
      mysqldump -uroot -proot -A > /backup/all_db.sql
    • 备份全部数据库的结构(-d参数)

      shell
      mysqldump -uroot -proot -A -d > /backup/all_db.sql
    • 备份全部数据库的数据(-t参数)

      shell
      mysqldump -uroot -proot -A -t > /backup/all_db.sql
    • 备份单个数据库的数据和结构,以备份carb_ignite库为例

      shell
      mysqldump -uroot -proot carb_ignite > /backup/carb_ignite.sql
    • 备份单个数据库的结构(-d参数)

      shell
      mysqldump -uroot -proot carb_ignite -d > /backup/carb_ignite.sql
    • 备份单个数据库的数据(-t参数)

      shell
      mysqldump -uroot -proot carb_ignite -t > /backup/carb_ignite.sql
    • 备份某个数据库的多个表的数据和结构(如果只结构 -d,如果只数据 -t)

      shell
      mysqldump -uroot -proot carb_ignite table1 table2 > /backup/carb_ignite_tables.sql
    • 一次性备份多个数据库(如果只结构 -d,如果只数据 -t)

      shell
      mysqldump -uroot -proot --databases database1 database2 > /backup/databases.sql

MIT版权,未经许可禁止任何形式的转载