跳至主要內容

windows server mysql数据库定时备份

tanmantang原创大约 4 分钟windowsmysql

windows服务器定时备份mysql数据库

新增定时脚本

将以下内容保存到automysqldump.bat文件中

提示

下方变量中填写需要备份的mysql信息

@echo off
::获取日期
set "yMd=%date:~,4%%date:~5,2%%date:~8,2%"
::获取时间
set "hms=%time:~,2%%time:~3,2%%time:~6,2%"

set database="database-name"
set host="127.0.0.1"
set port="3306"
set user="root"
set passwd="password"
set basedir="D:\mysql-5.7.22-winx64"
set backupdir="D:\mysql-backup"
:: 保留天数
set saveday = "30"
set otherarg="-B -F -R --single-transaction --quick --master-data=2"

::备份命令行
"%basedir%\bin\mysqldump.exe" -u%user% -p%passwd% -h%host% -P%port% %otherarg% %database% > %backupdir%\%database%-%yMd%.sql

:: 删除30天以前备份文件, 并将删除日志添加到备份文件log.log下面
forfiles /p %backupdir% /d -%saveday% /s /m "*.sql" /c  "cmd /c  del @file && echo @file has been deleted at %yMd%%hms%>> %backupdir%\log.log"

新增定时任务

相关信息

在此之前,你可以先执行或检查脚本正确性,保证定时任务执行时,不会出现错误

打开 控制面板 - 管理工具 - 任务计划程序

点击 任务计划程序库 - 创建基本任务

输入名称和描述(可不填)

触发器选择你需要脚本运行的时间周期

操作项选择启动程序, 程序和脚本选择刚刚新建的脚本文件

完成后,将在定时任务界面看到你新建的定时任务

mysqldump 常用参数

参数简写含义
--host-hmysql服务器IP地址
--port-Pmysql服务器端口号
--user-umysql服务器用户名
--pasword-pmysql服务器密码
--databases-B指定要备份的数据库[1]
--all-databases-A备份mysql服务器上的所有数据库
--tables指定需要导出的表名,会覆盖 --databases 或 -B 参数[2]
--all-tablespaces-Y导出全部表空间[3]
--no-tablespaces-y不导出表空间[4]
--add-drop-database每个数据库创建之前添加 drop 数据库语句[5]
--add-drop-table每个数据表创建之前添加 drop 数据表语句[6]
--add-locks备份数据库表时锁定数据库表
--lock-tables-l备份前锁定所有表
--no-create-db-n只导出数据,而不添加 CREATE DATABASE 语句
--no-create-info-t只导出数据,而不添加 CREATE TABLE 语句
--no-data-d不导出任何数据,只导出数据库表结构
--force-f当出现错误时仍然继续备份操作
--version-V输出 mysqldump 版本信息
--verbose-v输出多种平台信息
--xml-X导出 XML 格式
--help-h显示帮助信息
--compatible导出的数据将和其它数据库或旧版本的 MySQL 相兼容。值可以为 ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options 等。要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。
--compact压缩模式,产生更少的输出,去掉注释和头尾等结构
--complete-insert-c使用完整的 insert 语句(包含列名称)。这么做能提高插入效率,但是可能会受到 max_allowed_packet 参数的影响而导致插入失败。
--compress-C在客户端和服务器之间启用压缩传递所有信息
--events-E导出事件
--flush-logs-F开始导出之前刷新日志
--default-character-set设置默认字符集,默认值为utf8
--ignore-table指定忽略表,忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名[7]
--lock-all-tables-X提交请求锁定所有数据库中的所有表,以保证数据的一致性
--log-error附加警告和错误信息到给定文件[8]
--master-data该选项将 binlog 的位置和文件名追加到输出文件中
--max_allowed_packet客户端/服务器通信的最大 buffer size。默认值为 24MB,最大值为 1GB
--max_allowed_packetTCP/IP 和 socket 连接的缓存大小
--routines-R导出存储过程以及自定义函数。
--where-w只转储给定的 WHERE 条件选择的记录,请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来[9]

参考

https://blog.csdn.net/piaoranyuji/article/details/116193100


  1. mysqldump -uroot -p --databases databases1 databases2 ↩︎

  2. mysqldump -uroot -p -B test --tables test ↩︎

  3. mysqldump -uroot -p -A --all-tablespaces ↩︎

  4. mysqldump -uroot -p -A --no-tablespaces ↩︎

  5. mysqldump -uroot -p -A --add-drop-database ↩︎

  6. mysqldump -uroot -p -A --skip-add-drop-table ↩︎

  7. mysqldump -uroot -p -A --ignore-table=database.table1 --ignore-table=database.table2 ↩︎

  8. mysqldump -uroot -p -A --log-error=/tmp/mysqldump_error_log.err ↩︎

  9. mysqldump -uroot -p -A --where=" user='root'" ↩︎