0
set dateStr=%date:~-7,2%-%date:~-10,2%-%date:~-4,4%
"C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysqldump.exe" -u user -p password --all-

databases  --single-transaction --flush-logs --master-data=2 > full_backup_%dateStr%.sql

它适用于我们拥有的另一台服务器。这是一个新服务器,但具有相同的数据库。它只创建一个 1 KB 的文件,其内容为:

Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help

请帮忙。

4

2 回答 2

1

当我试图备份我自己的 Mysql 数据库时发现了这个问题,并认为我会分享我最终是如何做到的。

该代码基本上遍历所有数据库并创建一个 .sql 文件,其中包含每个数据库的所有结构和数据。

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: MySQL Backup
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: MySQl DB user
set dbuser=BackupUser

:: MySQl DB users password
set dbpass=BackUpUserPassWord

:: Switch to the MySQL data directory and collect the folder names
pushd "C:\Server\databases\mysql\data"

:: Loop through the folders and use the file names for the sql files, collects all databases automatically this way
:: Pass each name to mysqldump.exe and output an individual .sql file for each

FOR /D %%F IN (*) DO (
  "C:\Program Files\MySQL\bin\mysqldump.exe" --user=%dbuser% --password=%dbpass% --databases %%F > "C:\Server\backups\mysql\%%F.%TODAY%.sql"
)

要回答您的特定问题,请检查您是否以管理员身份运行脚本,以及您尝试备份的用户是否具有数据库的相关权限。在我以管理员身份运行我的 bat 文件之前,我一直被困在这个问题上。

要检查它是否是用户问题,请尝试使用 root 用户运行 mysqldump,看看是否有帮助,如果它知道它是数据库权限的问题。

要以管理员身份运行,请右键单击 bat 文件,然后选择以管理员身份运行,如果您正在使用,请不要忘记在计划任务中设置“以最高权限运行”复选框。

代码从这里复制: http ://www.syntaxwarriors.com/2012/backup-up-a-windows-server-using-only-free-tools/

于 2012-12-30T23:53:34.057 回答
0

我测试了你的代码并且它有效。我认为你应该再次检查你的 bat 文件是否有任何语法错误。

set dateStr=%date:~-7,2%-%date:~-10,2%-%date:~-4,4%
"D:\Sync\Apps\Wamp\bin\mysql\mysql5.5.20\bin\mysqldump.exe" -u root --all-databases  --single-transaction --flush-logs --master-data=2 > full_backup_%dateStr%.sql

我删除了 -pPASSWORD 部分,因为我的本地服务器上没有 root 密码。所以,如果你要从这里 C/P 它,不要忘记更改 mysqldump 的路径并添加 -p 部分。

于 2012-08-09T15:49:10.927 回答