我正在尝试自动备份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文件。
答案 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。请按照以下步骤操作:
使用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文件中。