全球主机交流论坛

标题: 有什么办法让每隔10分钟拷贝mysql目录的data目录到指定目录? [打印本页]

作者: mayapop1    时间: 2010-8-5 23:06
标题: 有什么办法让每隔10分钟拷贝mysql目录的data目录到指定目录?

系统是2003
作者: foxlovefox    时间: 2010-8-5 23:09
vb...
作者: laixuhui    时间: 2010-8-5 23:14
嘿嘿。。牛。。。。
作者: usa    时间: 2010-8-5 23:16
bat
作者: WAKAKA    时间: 2010-8-5 23:17
  1. while :
  2. do
  3. cp -a /!@#$/mysql/data /root/save/
  4. sleep 15m
  5. done
复制代码
sleep

update: 不好意思,看错了,原来是2003 ....

[ 本帖最后由 WAKAKA 于 2010-8-5 23:19 编辑 ]
作者: mayapop1    时间: 2010-8-6 01:13
2003咋弄呢
作者: vnconfig    时间: 2010-8-6 01:16
任务计划……
作者: zyypp    时间: 2010-8-6 01:43
计划任务定时执行 vbs或者bat之类的脚本
或者直接找现成的第三方备份管理工具
作者: Captain    时间: 2010-8-6 02:57
应mayapop1要求所写,该程序特点是可按日期(精确到秒)生成备份文件(copy机制,原文件无损),并可生成log文件备查看,可以用与mysqldata文件以及其他重要文件备份
本论坛首发 若转载请注明来自 全球主机交流论坛 www.loc.010206.xyz

(, 下载次数: 5)


内容比较简单,大家可以手动改改,拿去做他用



务必先手动设置mysqlbackup.bat的参数

:: 参数设置部分,请手动设置参数,bakdir为备份目录,sqldatadir为mysql\data文件夹目录

@set bakdir="e:\mysqlbak"
@set sqldatadir="d:\mysql\data"

mysqlbackup.bat
  1. @echo off
  2. @echo ------------
  3. @echo 数据自动备份批处理脚本
  4. @echo ------------

  5. :: 参数设置部分,请手动设置参数,bakdir为备份目录,sqldatadir为mysql\data文件夹目录

  6. @set bakdir="e:\mysqlbak"
  7. @set sqldatadir="d:\mysql\data"

  8. :: 以下可以无视
  9. set ThisDay=%date:~0,4%%date:~5,2%%date:~8,2%

  10. if "%time:~0,2%" lss "10" (
  11. set ThisTime=0%time:~1,1%%time:~3,2%
  12. ) else (
  13. set ThisTime=%time:~0,2%%time:~3,2%
  14. )
  15. set Now=%ThisDay%%ThisTime%

  16. if not exist %bakdir% (md %bakdir%)
  17. echo d|xcopy "%sqldatadir%" "%bakdir%\mysqldata-%Now%" /S /E /Y /C >> %bakdir%\log.txt
复制代码
接下来只要运行run.bat,输入密码即可定时备份

run.bat
  1. copy mysqlbackup.bat %windir%\System32\mysqlbackup.bat
  2. schtasks /create /sc minute /mo 10 /tn "mysql定时备份" /tr "%windir%\System32\mysqlbackup.bat"  /ED 2099/12/31
复制代码

[ 本帖最后由 Captain 于 2010-8-6 03:37 编辑 ]
作者: Captain    时间: 2010-8-6 02:59
来个打包

[ 本帖最后由 Captain 于 2010-8-6 03:00 编辑 ]
作者: WAKAKA    时间: 2010-8-6 03:02
  MARK 收藏
作者: 堕落市场    时间: 2010-8-6 03:06
这个确实很有用,谢谢分享
作者: mmxp    时间: 2010-8-6 03:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: herolee    时间: 2010-8-6 11:14
这种备份方法不科学……
作者: ATOM    时间: 2010-8-6 11:20
标记收藏.
作者: 小菜鸟    时间: 2010-8-6 11:25
十分钟备份一次。

楼主也算是牛人了。

要是数据库很大,上G了,10分钟一次不是折腾吗。

要是数据库很少,有必要10分钟一次吗?

一般来说。一天备份一次就OK了。
作者: mudfrog    时间: 2010-8-6 11:45
我来贡献一段代码
我曾经维护过不少windows2003服务器,php+mysql环境
直接copy data目录数据安全性无法保证
建议用mysqldump导出备份
  1. echo 备份某个网站的数据库
  2. C:\MySQL\bin\mysqldump.exe dbname --opt >E:\backup\dbname.sql -ubackupadmin -pbackupadminmima

  3. echo 用winrar对数据库文件进行打包
  4. C:\Progra~1\WinRAR\rar.exe a -inul -ri0 -r -s -inul -hp123456 -ms E:\backup\dbname.rar E:\backup\dbname.sql

  5. echo 根据日期将数据库文件进行归档
  6. for /f "tokens=1,2,3,4* delims=- " %%a in ("%date%") do move E:\backup\dbname.rar E:\backup\db\dbname%%a%%b%%c.rar
复制代码
简单介绍一下代码
路径什么自己调整

首先将 数据备份成.sql文件,然后rar压缩,再整理出包含日期名的归档文件。

备份时候

dbname 就是数据库的名称
-u参数后面跟的是用户名 -p是密码

rar打包那一段,打包文件是加密码的,密码是123456,自己可以修改,也可以取消密码保护

上面代码里面 我在mysql里面创建了一个backupadmin的用户,密码是backupadminmima
全局权限给予
select
lock tables
这两个权限

这样可以避免用root来备份。

保存成bat文件后,用计划任务来调用执行即可。

我的站 butian.org

[ 本帖最后由 mudfrog 于 2010-8-6 11:49 编辑 ]
作者: cuxian    时间: 2010-8-6 11:49
用bat 呵呵
作者: 炎羽    时间: 2010-8-6 12:56
你们数据库都不会被锁定的么,无法复制和写入
作者: spectrum    时间: 2010-8-6 13:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: winsock    时间: 2010-8-6 13:30
bin-log吧,复制data肯定是不可取的。。
作者: Captain    时间: 2010-8-6 19:51
本人从事管理win2003系统多年,经常帮客户还原数据,每周备份复制出来的data还没出现过出错的情况,但是考虑到数据不停的读写,如果复制的话,复制同时新写入的文件可能会不会记录,所以这个任务最好是在半夜执行,每24小时比较妥当

如果用我的方案,想保证数据最新且同步,可以先停止mysql,备份好之后再启动,但是不适合较大的数据库,因为网站不能等数据库停止太长时间

以下是这个方法的改法,在备份前后,加mysql停止和启动

net stop mysql

if not exist %bakdir% (md %bakdir%)
echo d|xcopy "%sqldatadir%" "%bakdir%\mysqldata-%Now%" /S /E /Y /C >> %bakdir%\log.txt

net start mysql

若是想不停止数据库来备份的话,可以采用17楼的方法,+上我帖子里run.bat添加计划任务来实现,就是设置的地方稍微复杂一些了




欢迎光临 全球主机交流论坛 (https://loc.010206.xyz/) Powered by Discuz! X3.4