使用批处理文件自动 MySQL 备份
Automatic MySQL backup using batch File
我正在尝试自动备份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 文件。
为了将来的参考和帮助,我正在更新我的答案!只需根据您的配置更新以下批处理文件:
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
你可以使用
.%date:~10,4%-%date:~7,2%-%date:~4,2%
Blockquote
在您的备份文件名中,它还会在文件名中存储日期。
然后 运行 这个批处理文件定期使用 Windows Task Schedule。
这对我有用要备份 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
如果你想指定端口,你需要这个。
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
在我的例子中,这个命令仍然生成了一个空的 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 文件
我遇到了同样的问题,意识到我没有在 mysql 转储命令中指定 MySQL 端口号。以下是我如何使用 windows .bat 文件自动备份 mysql 数据库。 我使用的是 Mysql 服务器 8.0。按照以下步骤操作:
- 在 C:\Program Files\MySQL\MySQL Server 8.0\bin 目录中创建 backup.bat 文件(取决于您的 MySQL 服务器安装位置和 mysqldump.exe).
- 粘贴下面的代码。对于我的情况,MySQL 服务器 运行s 在端口 3307 上。如果 3307 不起作用,请尝试 3306。
使用 system scheduler 安排工作(我发现这个程序比默认的 windows 任务计划程序更容易使用)或 windows 任务计划程序到 运行 自动在后台。 C:\Users\User\ 是我首选的备份位置
@echo off
mysqldump -u root -pYOURPASSWORD -P3307 --opt YOURDATABASENAME> "C:\Users\User\NAMEFORYOURBACKUPFILE.sql"
如果您使用的是 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
使用下面的代码并输入
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"
使用上述方法创建常规 sql 文件后,我们可以使用 winrar 并将文件名传递给此批处理文件,如果是否使用 DATE &,我的第二个参数创建 zip 文件名的时间信息:
假设我的批处理文件名是 makezip.bat,我会使用类似这样的名称:
makezip mysqlbackup.sql
如果您在 2020-07-09 运行 07:15am 它将创建 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"
如果需要,我还添加了一些代码来处理整个文件夹的压缩,实际上我们可以将文件夹拖放至此批处理文件以进行压缩。
此外,如果需要,可以使用 winrar 参数为输出的 zip 文件添加密码。
我正在尝试自动备份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 文件。
为了将来的参考和帮助,我正在更新我的答案!只需根据您的配置更新以下批处理文件:
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
你可以使用
.%date:~10,4%-%date:~7,2%-%date:~4,2% Blockquote
在您的备份文件名中,它还会在文件名中存储日期。
然后 运行 这个批处理文件定期使用 Windows Task Schedule。
这对我有用要备份 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
如果你想指定端口,你需要这个。
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
在我的例子中,这个命令仍然生成了一个空的 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 文件
我遇到了同样的问题,意识到我没有在 mysql 转储命令中指定 MySQL 端口号。以下是我如何使用 windows .bat 文件自动备份 mysql 数据库。 我使用的是 Mysql 服务器 8.0。按照以下步骤操作:
- 在 C:\Program Files\MySQL\MySQL Server 8.0\bin 目录中创建 backup.bat 文件(取决于您的 MySQL 服务器安装位置和 mysqldump.exe).
- 粘贴下面的代码。对于我的情况,MySQL 服务器 运行s 在端口 3307 上。如果 3307 不起作用,请尝试 3306。
使用 system scheduler 安排工作(我发现这个程序比默认的 windows 任务计划程序更容易使用)或 windows 任务计划程序到 运行 自动在后台。 C:\Users\User\ 是我首选的备份位置
@echo off mysqldump -u root -pYOURPASSWORD -P3307 --opt YOURDATABASENAME> "C:\Users\User\NAMEFORYOURBACKUPFILE.sql"
如果您使用的是 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
使用下面的代码并输入
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"
使用上述方法创建常规 sql 文件后,我们可以使用 winrar 并将文件名传递给此批处理文件,如果是否使用 DATE &,我的第二个参数创建 zip 文件名的时间信息:
假设我的批处理文件名是 makezip.bat,我会使用类似这样的名称:
makezip mysqlbackup.sql
如果您在 2020-07-09 运行 07:15am 它将创建 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"
如果需要,我还添加了一些代码来处理整个文件夹的压缩,实际上我们可以将文件夹拖放至此批处理文件以进行压缩。
此外,如果需要,可以使用 winrar 参数为输出的 zip 文件添加密码。