在 windows 上想要实现每天定时备份主服务器上的数据库,mysql 备份脚本如下:

@echo off
set hour=%time:~0,2%  
if "%time:~0,1%"==" " set hour=0%time:~1,1%  
set now=%Date:~0,4%%Date:~5,2%%Date:~8,2%%hour%%Time:~3,2%%Time:~6,2%  
echo %now%  
set host=x.x.x.x  
set port=3306  
set user=username  
set pass=passwdrd  
set dbname=entrance_guard  
set backupfile=D:\mysql_bkp\%dbname%-%now%.sql  
"D:\MySQL\MySQL Server 5.6\bin\mysqldump.exe" -h%host% -P%port% -u%user% -p%pass% %dbname% > %backupfile%
echo delete files before 60 days  
forfiles /p "D:\mysql_bkp" /m *.sql /d -60 /c "cmd /c del @file /f"  

遇见如下问题:

  • 脚本目录带空格解决办法如脚本所示.

  • 脚本不能运行,加入pause指令之后单步运行,发现报错:

    mysqldump unknown option --no-beep

    解决办法:

    注释掉 my.ini 中的 'no-beep' 选项

  • 导出之后,恢复导入的时候报告:

    lost connection from server

    原因:

    sql 文件太大, my.ini 默认允许导入4M文件,而我的文件88M。

    解决办法:

    max_allowed_packet = 512M 就可以了