有没有办法在一天中的特定时间为指定的服务器自动备份 MySQL 数据库或发送带有附件的电子邮件。你认为哪种方式是最好和最安全的?
问问题
78649 次
5 回答
30
最好的方法是
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
现在你只需要在你的任务调度器中调用这个命令。就是这样。:)
于 2014-07-07T10:36:45.517 回答
25
我会使用 Windows Task Scehduler/cron (取决于您的系统)和mysqldump。在链接中向下滚动,它包含一些如何实现您想要的见解。
于 2013-02-02T22:15:23.827 回答
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]
于 2014-02-07T09:33:21.513 回答
4
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%
。请注意,这 2 个变量基于语言环境和 cmd shell 版本
- 打开cmd窗口
- 输入
echo %time%
和echo %date%
我的是22:11:16.80
,06/29/2016 Wed
- substr 变量通过
%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"
- 提前检查
date
和time
- 使用
--result-file
选项而不是>
; 根据Mysql Manuel,使用“>”保存的文件的字符集是UTF-16
,而--result-file
以下是--default-character-set
- 保存到文件
BackpDay-databaseW.cmd
- 将其添加到新任务
Action
并设置触发器(Windows 任务计划程序)
于 2016-06-29T15:01:25.363 回答
2
我做了这项工作,类似于其他人所解释的......但几乎没有区别和额外的工作:
1)我制作了一个批处理文件
2)通过 Windows 调度程序运行该批处理文件
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
)
于 2019-07-02T12:41:28.393 回答