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
请帮忙。
答案 0 :(得分: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/
答案 1 :(得分: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部分。