使用批处理文件自动MySQL备份

时间:2016-04-25 07:18:09

标签: mysql database batch-file backup

我正在尝试自动备份mysql数据库;搜索了许多链接有很多参考,但甚至没有找到一个适合我的选项(接受付费软件)。最后,我正在尝试link

现在我有批处理脚本(下面给出),我根据我的凭据编辑它,但它正在创建空的SQL文件。我不知道为什么?我是MYSQL的新手,它的自动备份机制很差。

@ECHO OFF

set TIMESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%

REM Export all databases into file C:\path\backup\databases.[year][month][day].sql
"C:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump.exe" –-user=root –-password=xyz --all-databases --result-file="D:\dbbackup.%TIMESTAMP%.sql"

REM Change working directory to the location of the DB dump file.
C:
CD \path-to\backup\

REM Compress DB dump file into CAB file (use "EXPAND file.cab" to decompress).
MAKECAB "databases.%TIMESTAMP%.sql" "databases.%TIMESTAMP%.sql.cab"

REM Delete uncompressed DB dump file.
DEL /q /f "databases.%TIMESTAMP%.sql"

我运行这个批处理文件,它创建备份但是空的sql文件。

8 个答案:

答案 0 :(得分:4)

为了将来参考和帮助,我正在更新我的答案!只需根据您的配置更新以下批处理文件:

echo off 
start "" "C:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump.exe(your mysqldump address)" --user root --password=(provide here) databaseNameHere --result-file="D:\where you want path with SqlFileName.sql" --database databaseNameHere

你可以使用

  

%日期:〜10,4% - %日期:〜7,2% - %日期:〜4.2%   块引用

在备份文件名中,它还会将日期存储在文件名中。

然后使用Windows Task Schedule定期运行此批处理文件。

答案 1 :(得分:1)

如果要指定端口,则需要此。

echo off 

set TIMESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%

"C:\Program Files\MySQL\MySQLWorkbench6.3CE\mysqldump.exe" -uroot -ppassword -hlocalhost -P3307 ecommerce  > C:\Users\User\Desktop\backmeup\destination_\ecommerce.%TIMESTAMP%.sql 

众所周知,-p代表密码,-P代表端口。

由于某些原因,如果我使用-u root -p password等空格,它仍会给出错误。

而且,使用--databases对我不起作用。相反,我添加了:

echo off 

set TIMESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%

    "C:\Program Files\MySQL\MySQLWorkbench6.3CE\mysqldump.exe" -uroot -ppassword -hlocalhost -P3307 ecommerce  > C:\Users\User\Desktop\backmeup\destination_\ecommerce.%TIMESTAMP%.sql 
    "C:\Program Files\MySQL\MySQLWorkbench6.3CE\mysqldump.exe" -uroot -ppassword -hlocalhost -P3307 equipment_rent  > C:\Users\User\Desktop\backmeup\destination_\equipment_rent.%TIMESTAMP%.sql 

答案 2 :(得分:1)

在我的情况下,该命令仍然生成一个空的SQL文件。 所以我直接在CDM中运行了此命令,它给出了以下错误:

mysqldump throws: Unknown table 'COLUMN_STATISTICS' in information_schema..

所以要解决,我把 --column-statistics = 0会禁用出现此问题的mysqldump函数。

现在我的.bat文件看起来像这样:

echo off 

set TIMESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%

"C:\Program Files\MySQL\MySQL Workbench 8.0 CE\mysqldump.exe" --column-statistics=0 -uroot -ppassowrd -hhostName -P3306 databaseName  > D:\databaseName.sql

这解决了我的问题,现在可以正确执行SQL文件

答案 3 :(得分:1)

如果您使用的是xampp服务器,请使用以下技术-它对我有用:

@echo off 

set TIMESTAMP=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%

"C:\xampp\mysql\bin\mysqldump.exe" -uroot -ppassword -hlocalhost dbname> D:\test.%TIMESTAMP%.sql 

pause

答案 4 :(得分:0)

这适用于我备份Mysql数据库

@echo off 
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqldump" --user=root --
password=root --result-file="C:\Users\supriyam\Desktop\HotelBooking\db.sql" 
databasename(doctorsystem) 
echo Done!
pause
exit

答案 5 :(得分:0)

我遇到了同样的问题,并且意识到我没有在mysqldump命令中指定MySQL端口号。这是我使用 windows .bat文件自动备份mysql数据库的方法。我正在使用Mysql server 8.0。请按照以下步骤操作:

  1. 在C:\ Program Files \ MySQL \ MySQL Server 8.0 \ bin目录中创建backup.bat文件(取决于您的MySQL服务器安装位置和mysqldump.exe的路径)。
  2. 粘贴以下代码。就我而言,MySQL服务器在端口3307上运行。如果3307不起作用,请尝试3306。
  3. 使用system scheduler(比默认的Windows任务计划程序更容易使用该程序)或Windows任务计划程序在后台自动运行来计划作业。 C:\ Users \ User \是我的首选备份位置

    @echo off
    mysqldump -u root -pYOURPASSWORD -P3307 --opt YOURDATABASENAME> "C:\Users\User\NAMEFORYOURBACKUPFILE.sql"
    

答案 6 :(得分:0)

使用以下代码并输入

  • mysqldump.exe[mysqldump path]的路径
  • 您在[username]中的Mysql用户名
  • 您在[password]中的Mysql密码
  • 您在[database name]中的Mysql数据库名称
  • 要在[full path where you want to save db]中转储的完整路径
@echo off
set currdate=%date:~4%
set filedate=%currdate:/=_%
[mysqldump path] -u [username] -p[password] [database name] > "[full path where you want to save db]_%filedate%.sql"

答案 7 :(得分:0)

使用上述方法创建常规sql文件后,我们可以使用winrar并将文件名传递给该批处理文件,在我的情况下,第二个参数是否使用日期和时间信息来创建zip文件名:

所以说我的批处理文件名是makezip.bat,我会使用类似的东西:

makezip mysqlbackup.sql 

,如果您在2020-07-09 07:15 am运行它,它将创建zip文件:mysqlbackup-20200907-0715.zip

@ECHO OFF
if "%~1"=="" goto BLANK

set useDMY=-agYYYYMMDD-HHMMSS
set useDMY2=-

if "%~2" NEQ "" goto dontUseDMY

goto carryon

:dontUseDMY
set useDMY=
set useDMY2=

:carryon
set flags=%~a1
set isFolder="%flags:~0,1%"
if %isFolder% EQU "d" goto zipFolder

:zipFile
winrar a %useDMY% %~n1%useDMY2%.rar %1
goto DONE

:zipFolder
winrar a -r %useDMY% %1%useDMY2% %1\*
GOTO DONE

:BLANK
    ECHO ERROR...PLEASE PROVIDE THE FOLDER TO RAR
    PAUSE
:DONE
    ECHO "ALL DONE"

如果需要,我还添加了一些代码来处理整个文件夹的压缩,实际上我们可以将DRAG和DROP文件夹添加到该批处理文件中以进行压缩。

如果需要,还可以使用winrar参数将密码添加到输出zip文件中。