MySQL数据库在Windows服务器上自动备份

时间:2013-02-02 21:41:42

标签: mysql database backup

有没有办法在指定服务器的某些时间自动备份MySQL数据库或发送带附件的电子邮件..您认为哪种方法是实现此目的的最佳和最安全的方式?

5 个答案:

答案 0 :(得分:23)

我会使用Windows任务计划程序/ cron(取决于您的系统)和mysqldump。在链接中向下滚动,它包含一些如何实现您想要的见解。

答案 1 :(得分:21)

最好的方法是

mysqldump.exe --user=YourUserName --password=YourPassword --host=localhost --port=3306 --result-file="Path\dump.sql" --databases "DatabaseName1" "Database2"


mysqldump.exe --user=root --password=root  --host=localhost --port=3306 --result-file="c:\www\db\backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql" --default-character-set=utf8 --single-transaction=TRUE --databases "dbtest1" "dbtest2"

模式backup.%date:~10,4%%date:~7,2%%date:~4,2%.sql每次运行时都会创建一个唯一的名称(backup20131010.sql

现在您只需要在任务计划程序中调用此命令。而已。 :)

答案 2 :(得分:7)

您可以将其中一个命令添加到Windows task scheduler

mysqldump –-user [username] –-password=[password] [database name] > [dump file]

或以紧凑的方式:

mysqldump –u[username] –p[password] [database name] > [dump file]

或:

mysqldump -u[user] -p[password] --result-file="c:\<path>\backup.%DATE:~0,3%.sql" [database]

答案 3 :(得分:2)

databaseW.2016,06,29-22,31,48-15.sql

@echo off
rem Backup Database (Daily,via Task Scheduler)
rem databaseW
set filename="c:\xampp\dbk\databaseW.%date:~6,4%,%date:~0,2%,%date:~3,2%-%time:~0,2%,%time:~3,2%,%time:~6,2%-%time:~9,2%.sql"
c:\xampp\mysql\bin\mysqldump.exe --user=root --password=dell@root --host=localhost --port=3306 --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE --databases "databaseW"

要创建名称基于日期和时间的文件,请使用%date%%time%。 请注意,这两个变量基于locale和cmd shell版本

  • 打开cmd windows
  • 输入echo %time%echo %date% 我的是22:11:16.8006/29/2016 Wed
  • 通过%variable:~startpos,length%对变量进行索引 我想用逗号分隔的时间,所以cmd会去 echo %time:~0,2%,%time:~3,2%,%time:~6,2%,%time:~9,2%
  • 获取databaseW.2016,06,29-22,31,48-15.sql这样的文件名 使用set filename="databaseW.%date:~6,4%,%date:~0,2%,%date:~3,2%-%time:~0,2%,%time:~3,2%,%time:~6,2%-%time:~9,2%.sql"
  • 提前查看datetime
  • 使用--result-file选项代替>;根据Mysql Manuel,使用&#34;&gt;&#34;保存文件的字符集。是UTF-16,而--result-file跟在--default-character-set
  • 之后
  • 保存到文件BackpDay-databaseW.cmd
  • 将其添加到新任务Action并设置触发器(Windows任务计划程序)

答案 4 :(得分:0)

我完成了工作,类似于其他人通过...进行的解释。但差异不大,工作量大

1)我制作了一个批处理文件
2)通过Windows Scheduler运行该批处理文件
3)为该任务制定适当的时间表
4)在批处理文件中,执行以下步骤:

  • 4-1)根据当前日期准备文件名
  • 4-2)通过mysqldump.exe在相应的目录和文件名中进行备份
  • 4-3)通过7-Zip应用程序制作一个压缩文件(安装它),然后删除未压缩的备份
  • 4-4)将副本放在我们的网络文件服务器上

这是一个脚本(.bat)示例:

@echo off
set current=%date:~10,4%%date:~4,2%%date:~7,2%
set filename="E:\MySQL Backups\DBName-%current%.sql"
set filename2="E:\MySQL Backups\DBName-%current%.zip"
echo %filename%
cd "E:\MySQL Backups"
C:\"Program Files"\MySQL\"MySQL Server 5.5"\bin\mysqldump.exe db_name --user=root --password=rootpass --host="127.0.0.1" --port=instancePort --result-file=%filename% --default-character-set=utf8 --single-transaction=TRUE
echo backup-finished

if exist %filename% (
    "C:\Program Files\7-Zip\7z.exe" a %filename2% %filename%
    echo zip-finished
    del %filename%
)
if exist %filename2% (
    copy %filename2% "\\192.168.x.x\MySQL Backups"
    echo copy-finished
)