2013-08-26 41 views
1

我打算在一段时间内备份​​mySQL数据库。 例如:仅备份1月至6月的数据。MySQL-可以在一段时间内备份​​mySQL数据库吗?

有没有可能这样做?我想这样做的原因是我不想备份太旧的数据库。 如果可能,请给我一些建议如何做到这一点。 谢谢。

+1

作为主题搁置,真的吗?我认为SQL查询甚至命令行工具都适合这个网站。 –

回答

0

我假设你想基于日期备份表ROWS,而不是表本身。

如果您的表具有datetimestamp列,则可以使用INTO OUTFILE查询来基于日期备份某些行。

或者,从命令行,你可以使用mysqldump和--where选项。

看到这个答案: MYSQL Dump only certain rows

+1

如果我需要以这种方式备份包含所有表的整个数据库,这个--where选项仍然适用于这种情况?提供的答案似乎只是在特定的表中备份某一行数据。 – user2717047

0

试试这个:

exec("mysqldump --opt -u$db_user -p$db_pass --no-create-info --where date >= '2013-08-01' my_database my_table > backup.sql"); 
0

你有几种方法可以做到这一点,你可以使用shell脚本并运行mysqldump为的cronjob,你应该只写类似以下脚本,然后将其添加到您的crobjob。

#!/bin/bash 
mysqldump --add-drop-table -h <hostname> -u <username> --password=<password> --all-databases > backup.sql 
filename="backup.sql."`eval date +%Y%m%d`".tgz" 
tar -czf $filename backup.sql 
rm backup.sql 

然后通过crontab -e编辑crobjob并添加类似下面一行:

* * * * * /usr/local/bin/php /home/moein/projects/WebService/index.php 
#this cronjob executed every min. 

可以使用event在MySQL中获取backup.but你的MySQL版本,其他的方法应该是>5.1.8

更多描述在mysql dev page